|
|
|
Два ККТ в БП 3.0 | ☑ | ||
|---|---|---|---|---|
|
0
Deni1c
22.10.17
✎
11:08
|
Торговля ведется с одного рабочего места,к базе подключены две ккт с передачей данных, позиции в чеке подбираются от разных организаций, при пробитии необходимо чтобы товар пробивался на свою организацию
Реализовывал подобное в рознице 1.0 делал как описано тут v8: Два ФКР на одном рабочем месте кассира, как подобное реализовать в Бухгалтерии предприятия 3.0, может кто то делал что то подобное |
|||
|
1
Deni1c
22.10.17
✎
11:12
|
Если Константы.ДваФР.Получить() Тогда
Запрос = Новый Запрос(" |ВЫБРАТЬ * ПОМЕСТИТЬ ТабТов ИЗ &ТабТов КАК ТТ; |ВЫБРАТЬ * |ИЗ | ТабТов КАК Товары |ГДЕ | Товары.Номенклатура.ТоварОрганизации = &Организация"); Запрос.УстановитьПараметр("ТабТов", Товары.Выгрузить()); ВремДисконтнаяКарта = ДисконтнаяКарта; Оплаты = Оплата.Выгрузить(); СписокОплат = Новый СписокЗначений; ПервыйПроход = 1; Организации = Справочники.Организации.Выбрать(); Пока Организации.Следующий() Цикл Организация = Организации.Ссылка; Если Организация = Магазин.ОсновнойСклад.Организация Тогда Запрос.Текст = Запрос.Текст +" ИЛИ Товары.Номенклатура.ТоварОрганизации = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)"; КонецЕсли; Запрос.УстановитьПараметр("Организация", Организация); Результат = Запрос.Выполнить(); Если Не Результат.Пустой() Тогда Товары.Загрузить(Результат.Выгрузить()); Оплата.Загрузить(Оплаты); ИтогСуммы = Товары.Итог("Сумма"); ИтогОплат = Оплаты.Итог("Сумма"); Если ИтогСуммы <> ИтогОплат Тогда Если Оплата.Количество() = 1 Тогда ФормаОплат = Оплата.Получить(0); ФормаОплат.Сумма = ИтогСуммы; Иначе Для Каждого ФормаОплат Из Оплата Цикл Если ПервыйПроход Тогда СуммаОплаты = ИтогСуммы * Окр(ФормаОплат.Сумма / ИтогОплат, 2); СписокОплат.Добавить(ФормаОплат.Сумма - СуммаОплаты); ФормаОплат.Сумма = СуммаОплаты; Иначе ФормаОплат.Сумма = СписокОплат.Получить(ФормаОплат.НомерСтроки - 1).Значение; КонецЕсли; КонецЦикла; ПервыйПроход = 0; КонецЕсли; КонецЕсли; ДисконтнаяКарта = ВремДисконтнаяКарта; ФР = ПолучитьСерверТО().ПолучитьИдентификаторПоИдКассы(Организация); КассаККМ = ПолучитьСерверТО().ПолучитьКассуККМ(ФР); ПересчитатьАвтоматическиеСкидки(); ЗавершитьЗакрытиеЧека2(Печать, РучнойРежим, ВыбратьДокументПечати); КонецЕсли; КонецЦикла; Иначе ЗавершитьЗакрытиеЧека2(Печать, РучнойРежим, ВыбратьДокументПечати); КонецЕсли; Так реализованов рознице где подобное сделать в бп не пойму |
|||
|
2
Deni1c
22.10.17
✎
11:20
|
Ткните пальце какую процедуру пилить в БП. Понятно что документ розничные продажи чек, модуль формы ФормаДокументаОбщая в какой процедуре допилить не мойму
|
|||
|
3
Deni1c
22.10.17
✎
11:34
|
Похоже никто не реализовывал подобное в бп, понятно что в рознице 2.0 это реализовано, но руководство хочет торговать именно из бп 3.0 от розницы 1.0 уходим хотя к ней допилил обработку с ккт работает
|
|||
|
4
2S
22.10.17
✎
11:37
|
(3) не делал, но просто рассуждения
1. Разделение товара по секциям 2. в БП обслуживание ТО не через внешние обработки? |
|||
|
5
Deni1c
22.10.17
✎
11:41
|
В БП 3.0 обслуживание ТО в конфиг зашито
|
|||
|
6
Deni1c
22.10.17
✎
11:42
|
Разделение по секциям это если один ккт подключен и бьем товар по секциям, а мне нужно товар пробивать на разные ккт из одного документа чек
|
|||
|
7
Deni1c
22.10.17
✎
11:45
|
В форме дописал табличную часть добавил реквизит ИндентификаторККТ, при подборе его заполняю, а вот как дальше пока загвоздка
|
|||
|
8
Deni1c
22.10.17
✎
13:45
|
Копал нашел Процедура ПринятьОплатуЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено И ТипЗнч(Результат) = Тип("Структура") Тогда ПараметрыОповещения = ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру(Результат); ПараметрыОповещения.Вставить("СписокОборудования", ДополнительныеПараметры.СписокОборудованияПечатьЧека); Если Результат.ОплатаКарта <> 0 Тогда СписокВидовОплатПоОрганизации = ВидыОплатПлатежнойКартой(Объект.Организация); Если СписокВидовОплатПоОрганизации.Количество() = 1 Тогда ОплатаКартойЗавершение(СписокВидовОплатПоОрганизации[0], ПараметрыОповещения); Иначе ОтборВидыОплат = Новый Структура("Организация, ТипОплаты, ПометкаУдаления", Объект.Организация, ПредопределенноеЗначение("Перечисление.ТипыОплат.ПлатежнаяКарта"), Ложь); ЗаголовокФормыВыбора = НСтр("ru = 'Выберите вид оплаты'"); ОповещениеПриЗавершенииВыбора = Новый ОписаниеОповещения("ОплатаКартойЗавершение", ЭтотОбъект, ПараметрыОповещения); ПараметрыОткрытияФормы = Новый Структура("Отбор, Заголовок", ОтборВидыОплат, ЗаголовокФормыВыбора); ОткрытьФорму("Справочник.ВидыОплатОрганизаций.ФормаВыбора", ПараметрыОткрытияФормы, ЭтаФорма, УникальныйИдентификатор, , ,ОповещениеПриЗавершенииВыбора); КонецЕсли; Иначе НапечататьЧек(ПараметрыОповещения); КонецЕсли; КонецЕсли; КонецПроцедуры копать нужно тут |
|||
|
9
h-sp
22.10.17
✎
14:08
|
(8) наверно в НапечататьЧек копать
|
|||
|
10
Deni1c
02.11.17
✎
03:56
|
Дописал протестил работает ниже код с дописками
Обработка Подбор Номенклатуры 1. Процедура ОК(Команда) Отказ = НЕ ПроверитьЗаполнение(); //Денис+ В параметры добавил ККТОрганизации Если НЕ Отказ Тогда ПараметрЗакрытия = Новый Структура("Номенклатура, Количество, Цена, Валюта,ККТОрганизации"); ЗаполнитьЗначенияСвойств(ПараметрЗакрытия, ЭтотОбъект); Закрыть(ПараметрЗакрытия); КонецЕсли; КонецПроцедуры 2. &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) СписокСвойств = "Номенклатура, Количество, ЕдиницаИзмерения, Цена, Валюта, |ЕстьКоличество, ЕстьЦена"; ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры, СписокСвойств); Если НЕ ЕстьКоличество И НЕ ЕстьЦена Тогда Отказ = Истина; КонецЕсли; СвойстваНоменклатуры = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Номенклатура, "Наименование, ЕдиницаИзмерения"); Заголовок = СвойстваНоменклатуры.Наименование; Если НЕ ЗначениеЗаполнено(ЕдиницаИзмерения) Тогда ЕдиницаИзмерения = СвойстваНоменклатуры.ЕдиницаИзмерения; КонецЕсли; Элементы.Количество.Видимость = ЕстьКоличество; Элементы.ЕдиницаИзмерения.Видимость = ЕстьКоличество; Элементы.Цена.Видимость = ЕстьЦена; Элементы.ВалютаЦены.Видимость = ЕстьЦена; Элементы.Сумма.Видимость = ЕстьЦена; Элементы.ВалютаСуммы.Видимость = ЕстьЦена; Сумма = Цена * Количество; //Денис+ Запрос = Новый Запрос; Запрос.Текст="ВЫБРАТЬ | ХозрасчетныйОстатки.Субконто3 КАК Склад, | ХозрасчетныйОстатки.Субконто1 КАК Товар, | ХозрасчетныйОстатки.КоличествоОстатокДт КАК Остаток |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки(&КонецПериода, Счет В ИЕРАРХИИ (&ВыбСчет), , Субконто1 = &Номенклатура) КАК ХозрасчетныйОстатки | |СГРУППИРОВАТЬ ПО | ХозрасчетныйОстатки.Субконто3, | ХозрасчетныйОстатки.Субконто1, | ХозрасчетныйОстатки.КоличествоОстатокДт |ИТОГИ ПО | Склад" ; Запрос.УстановитьПараметр("ВыбСчет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01")); Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(ТекущаяДата())); Запрос.УстановитьПараметр("Номенклатура",Номенклатура.Ссылка); ТабВКоде = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.Прямой); //СоздатьТаблицуЗначенийВРеквизитеФормы(ЭтаФорма, "ТаблицаЗапросаТЗ", РезультатЗапроса); //ЗначениеВРеквизитФормы(РезультатЗапроса, "ТаблицаЗапросаТЗ"); ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме(ТабВКоде, "ТабРеквизит", "ТабНаФорме"); //Денис- КонецПроцедуры //Денис+ 3. //Денис+ &НаСервере &НаСервере Процедура ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме(ТабВКоде, ТабРеквизит, ТабНаФорме) // реквизит ТабРеквизит и соответствующий // ему элемент формы ТабНаФорме уже созданы // нами в визуальном режиме // 1. добавляем колонки из ТабВкоде в реквизит ТабРеквизит НовыеРеквизиты = Новый Массив; Для Каждого Колонка Из ТабВКоде.Колонки Цикл НовыеРеквизиты.Добавить( Новый РеквизитФормы( Колонка.Имя, Колонка.ТипЗначения, ТабРеквизит ) ); КонецЦикла; ИзменитьРеквизиты(НовыеРеквизиты); // 2. добавляем колонки из ТабВКоде в элемент ТабНаФорме Для Каждого Колонка Из ТабВКоде.Колонки Цикл НовыйЭлемент = Элементы.Добавить( ТабРеквизит + "_" + Колонка.Имя, Тип("ПолеФормы"), Элементы[ТабНаФорме] ); НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ПутьКДанным = ТабРеквизит + "." + Колонка.Имя; КонецЦикла; // 3. наконец, передаём данные из ТабВКоде в ТабРеквизит ЗначениеВРеквизитФормы(ТабВКоде, ТабРеквизит); // готово! КонецПроцедуры Документ Розничная продажа (чек) 1. &НаКлиенте Процедура НапечататьЧек(ПараметрыОплаты) //Денис+ АдресХранилищаВидаОперации=ПолучитьВидОперацииЧека(); ВидОпер=ПолучитьИзВременногоХранилища(АдресХранилищаВидаОперации); Для Каждого Элемент Из ВидОпер Цикл КакаяОперация=Элемент.Значение; КонецЦикла; Если Объект.ВидОперации=КакаяОперация И Объект.Номер="" Тогда АдресХранилища=ПолучитьОрганизацииПробитияВозможногоЧека(); ОрганизацииПробитияВозможногоЧека= ПолучитьИзВременногоХранилища(АдресХранилища); ПервыйПроход = 1; Для Каждого Элемент Из ОрганизацииПробитияВозможногоЧека Цикл ОрганизацияДляВозможногоПробитияЧека=Элемент.Значение; АдресХранилищаСклада=ПолучитьСкладСписанияВозможногоЧека(Элемент.Значение); СкладСписанияВозможногоЧекаТЗ=ПолучитьИзВременногоХранилища(АдресХранилищаСклада); Для Каждого Элемент Из СкладСписанияВозможногоЧекаТЗ Цикл СкладСписанияВозможногоЧека=Элемент.Значение; КонецЦикла; ПолучитьТаблицуТоваровДляПечатиНаНесколькоОрганизаций(ОрганизацияДляВозможногоПробитияЧека, СкладСписанияВозможногоЧека,ПервыйПроход); ПервыйПроход=0; КонецЦикла; Объект.Товары.Очистить(); Объект.Оплата.Очистить(); //Теперь нужно пробить чеки которые записаны АдресХранилищаНепробитыхЧеков=ПолучитьДокументыЧекЗаписанныеНоНеПробитые(); ДокументыЧекЗаписанные=ПолучитьИзВременногоХранилища(АдресХранилищаНепробитыхЧеков); Для Каждого Элемент Из ДокументыЧекЗаписанные Цикл ПараметрыДляПробитияЧека= ПолучитьПараметрыПробиваемогоЧека(Элемент.Значение); ПараметрыОповещения = Новый Структура("ПараметрыОплаты , ПечататьТоварныйЧек, ОплатаКарта", ПараметрыОплаты , ПараметрыОплаты.ПечататьТоварныйЧек, ПараметрыОплаты.ОплатаКарта); Если ПараметрыОплаты.Свойство("ИдентификаторУстройстваЭТ") Тогда ПараметрыОповещения.Вставить("ИдентификаторУстройстваЭТ", ПараметрыОплаты.ИдентификаторУстройстваЭТ); КонецЕсли; ТипУстройства = ""; Если ЗначениеЗаполнено(ПараметрыДляПробитияЧека.УИНУстройства) Тогда ДанныеУстройства = МенеджерОборудованияКлиентПовтИсп.ПолучитьДанныеУстройства(ПараметрыДляПробитияЧека.УИНУстройства); ТипУстройства = ?(ДанныеУстройства.Свойство("ТипОборудованияИмя"), ДанныеУстройства.ТипОборудованияИмя, "ККТ"); КонецЕсли; ПараметрыОповещения.Вставить("ИдентификаторУстройства", ПараметрыДляПробитияЧека.УИНУстройства); ПараметрыОповещения.Вставить("ТипУстройства", ТипУстройства); Если ТипУстройства = "ККТ" Тогда ФормаПробиваемогоЧека=ПолучитьФорму("Документ.РозничнаяПродажа.Форма.ФормаДокументаОбщая"); ДанныеФормаПробиваемогоЧека= ФормаПробиваемогоЧека.Объект; ЗаполнитьНаСервереДанныеФормаПробиваемогоЧека(ДанныеФормаПробиваемогоЧека,Элемент.Значение); КопироватьДанныеФормы(ДанныеФормаПробиваемогоЧека, ФормаПробиваемогоЧека.Объект); ОповещениеПриЗавершении = Новый ОписаниеОповещения("ПолучитьПараметрыЗавершение",ФормаПробиваемогоЧека, ПараметрыОповещения); МенеджерОборудованияКлиент.НачатьПолучениеПараметровФискальногоУстройства(ОповещениеПриЗавершении, ПараметрыДляПробитияЧека.УИНДокумента , ПараметрыДляПробитияЧека.УИНУстройства, Ложь); Иначе ПолучитьПараметрыЗавершение(Неопределено, ПараметрыОповещения); КонецЕсли; //Теперь нужно если чек пробился удалить временный документ //определимся если документу присвоен НомерЧекККТ то удаляем временный документ Если ЗначениеЗаполнено(Объект.НомерЧекаККМ)=Истина Тогда УдалениеВременноСозданныхДокументовЧеки(Элемент.Значение); КонецЕсли; КонецЦикла; Иначе //Денис- ПараметрыОповещения = Новый Структура("ПараметрыОплаты , ПечататьТоварныйЧек, ОплатаКарта", ПараметрыОплаты , ПараметрыОплаты.ПечататьТоварныйЧек, ПараметрыОплаты.ОплатаКарта); Если ПараметрыОплаты.Свойство("ИдентификаторУстройстваЭТ") Тогда ПараметрыОповещения.Вставить("ИдентификаторУстройстваЭТ", ПараметрыОплаты.ИдентификаторУстройстваЭТ); КонецЕсли; СписокОборудования = ПараметрыОплаты.СписокОборудования; Если СписокОборудования.Количество() = 1 Тогда ВыбратьУстройствоЗавершение(СписокОборудования[0], ПараметрыОповещения); ИначеЕсли СписокОборудования.Количество() > 0 Тогда ТипыОборудования = Новый Массив; ТипыОборудования.Добавить(ПредопределенноеЗначение("Перечисление.ТипыПодключаемогоОборудования.ФискальныйРегистратор")); ТипыОборудования.Добавить(ПредопределенноеЗначение("Перечисление.ТипыПодключаемогоОборудования.ПринтерЧеков")); ТипыОборудования.Добавить(ПредопределенноеЗначение("Перечисление.ТипыПодключаемогоОборудования.ККТ")); МассивСкладов = Новый Массив; МассивСкладов.Добавить(ПредопределенноеЗначение("Справочник.Склады.ПустаяСсылка")); МассивСкладов.Добавить(Объект.Склад); СтруктураОтбора = Новый Структура("Организация, Склад, ТипОборудования, УстройствоИспользуется", Объект.Организация, МассивСкладов, ТипыОборудования, Истина); ПараметрыФормыВыбора = Новый Структура("Отбор, Заголовок", СтруктураОтбора, НСтр("ru='Выберите фискальный регистратор (принтер чеков)'", "ru") ); ОповещениеПриЗавершенииВыбора = Новый ОписаниеОповещения("ВыбратьУстройствоЗавершение", ЭтотОбъект, ПараметрыОповещения); ОткрытьФорму("Справочник.ПодключаемоеОборудование.Форма.ФормаВыбораИзСписка", ПараметрыФормыВыбора,ЭтаФорма,УникальныйИдентификатор,,,ОповещениеПриЗавершенииВыбора,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); Иначе ВыбратьУстройствоЗавершение(Неопределено, ПараметрыОповещения); КонецЕсли; //Денис+ КонецЕсли; //Денис- КонецПроцедуры 2. Добавлены следующие процедуры и функции //Денис+ &НаСервере Процедура УдалениеВременноСозданныхДокументовЧеки(СсылкаНадокумент) ДокументПробития=СсылкаНадокумент; ПолучаемДокументПробития= ДокументПробития.ПолучитьОбъект(); ПолучаемДокументПробития.УстановитьПометкуУдаления(Истина); ПолучаемДокументПробития.Удалить(); КонецПроцедуры &НаСервере Процедура ЗаполнитьНаСервереДанныеФормаПробиваемогоЧека(ФормаДляЗаполнения,СсылкаНадокумент) ДокументПробития=СсылкаНадокумент; ПолучаемДокументПробития= ДокументПробития.ПолучитьОбъект(); ФормаДляЗаполнения.Организация=ПолучаемДокументПробития.Организация.Ссылка; ФормаДляЗаполнения.Склад=ПолучаемДокументПробития.Склад.Ссылка; ФормаДляЗаполнения.Товары.Загрузить(ПолучаемДокументПробития.Товары.Выгрузить()); ФормаДляЗаполнения.Оплата.Загрузить(ПолучаемДокументПробития.Оплата.Выгрузить()); КонецПроцедуры &НаСервере Функция ПолучитьПараметрыПробиваемогоЧека(СсылкаНадокумент) ДокументПробития=СсылкаНадокумент; ПолучаемДокументПробития= ДокументПробития.ПолучитьОбъект(); ПараметрыДляПробитияЧека=Новый Структура; ПараметрыДляПробитияЧека.Вставить("УИНДокумента",ДокументПробития.УникальныйИдентификатор()); Запрос=Новый Запрос; Запрос.Текст="ВЫБРАТЬ | ПодключаемоеОборудование.Ссылка КАК Ссылка |ИЗ | Справочник.ПодключаемоеОборудование КАК ПодключаемоеОборудование |ГДЕ | ПодключаемоеОборудование.Организация.Ссылка = &Организация"; Запрос.Параметры.Вставить("Организация",ПолучаемДокументПробития.Организация.Ссылка); Результат=Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл УИНОборудования=Результат.Ссылка; КонецЦикла; ПараметрыДляПробитияЧека.Вставить("УИНУстройства",УИНОборудования); ПараметрыДляПробитияЧека.Вставить("ОбъектПробития", ПолучаемДокументПробития.Ссылка); Возврат ПараметрыДляПробитияЧека; КонецФункции &НаСервере Функция ПолучитьДокументыЧекЗаписанныеНоНеПробитые() Запрос=Новый Запрос; Запрос.Текст="ВЫБРАТЬ | РозничнаяПродажа.Ссылка КАК Ссылка |ИЗ | Документ.РозничнаяПродажа КАК РозничнаяПродажа |ГДЕ | РозничнаяПродажа.Проведен = ЛОЖЬ | И РозничнаяПродажа.Дата МЕЖДУ &Датаначала И &ДатаОкончания | И РозничнаяПродажа.ПометкаУдаления = ЛОЖЬ"; Запрос.Параметры.Вставить("Датаначала",НачалоДня(ТекущаяДата())); Запрос.Параметры.Вставить("ДатаОкончания",КонецДня(ТекущаяДата())); Результат=Запрос.Выполнить(); Список = Новый СписокЗначений; Список.ЗагрузитьЗначения(Результат.Выгрузить().ВыгрузитьКолонку("Ссылка")); //Список.ЗагрузитьЗначения(Результат.Выгрузить().ВыгрузитьКолонку("ИдентификаторУстройства")); АдресХранилищаНепробитыхЧеков =ПоместитьВоВременноеХранилище(Список,Новый УникальныйИдентификатор()); Возврат АдресХранилищаНепробитыхЧеков; КонецФункции &НаСервере Функция ПолучитьВидОперацииЧека(); Результат=Перечисления.ВидыОперацийРозничнаяПродажа.Продажа; Список = Новый СписокЗначений; Список.Добавить(Результат); АдресХранилищаВидОперации =ПоместитьВоВременноеХранилище(Список,Новый УникальныйИдентификатор()); Возврат АдресХранилищаВидОперации; КонецФункции &НаСервере Функция ПолучитьСкладСписанияВозможногоЧека(Параметр); Запрос=Новый Запрос; Запрос.Текст="ВЫБРАТЬ | ОборудованиеПоОрганизациям.Склад.Ссылка КАК СкладСсылка |ИЗ | РегистрСведений.ОборудованиеПоОрганизациям КАК ОборудованиеПоОрганизациям |ГДЕ | ОборудованиеПоОрганизациям.Организация.Ссылка = &Организация" ; Запрос.Параметры.Вставить("Организация", Параметр); Результат=Запрос.Выполнить(); Список = Новый СписокЗначений; Список.ЗагрузитьЗначения(Результат.Выгрузить().ВыгрузитьКолонку("СкладСсылка")); АдресХранилищаСклада =ПоместитьВоВременноеХранилище(Список,Новый УникальныйИдентификатор()); Возврат АдресХранилищаСклада; КонецФункции &НаСервере Функция ПолучитьОрганизацииПробитияВозможногоЧека(); Запрос = Новый Запрос; Запрос.Текст="ВЫБРАТЬ | Организации.Ссылка КАК Ссылка |ИЗ | Справочник.Организации КАК Организации"; Результат = запрос.Выполнить(); Список = Новый СписокЗначений; Список.ЗагрузитьЗначения(Результат.Выгрузить().ВыгрузитьКолонку("Ссылка")); АдресХранилища =ПоместитьВоВременноеХранилище(Список,Новый УникальныйИдентификатор()); Возврат АдресХранилища; КонецФункции &НаСервере Процедура ПолучитьТаблицуТоваровДляПечатиНаНесколькоОрганизаций(ВыбраннаяОрганизация, ВыбранныйСклад, НомерПрохода) Запрос = Новый Запрос(" |ВЫБРАТЬ * ПОМЕСТИТЬ ТабТов ИЗ &ТабТов КАК ТТ; |ВЫБРАТЬ * |ИЗ | ТабТов КАК Товары |ГДЕ | Товары.ККТОрганизации.Ссылка = &КассаОрг"); Запрос.УстановитьПараметр("ТабТов", Объект.Товары.Выгрузить()); Оплаты = Объект.Оплата.Выгрузить(); СписокОплат = Новый СписокЗначений; Кассы = ВыбраннаяОрганизация; Если Кассы =Справочники.Организации.ОрганизацияПоУмолчанию().Ссылка Тогда Запрос.Текст = Запрос.Текст +" ИЛИ Товары.ККТОрганизации.Ссылка = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)"; КонецЕсли; Запрос.УстановитьПараметр("КассаОрг", Кассы); Результат = Запрос.Выполнить(); Если Не Результат.Пустой() Тогда НовыйДокумент = Документы.РозничнаяПродажа.СоздатьДокумент(); НовыйДокумент.Товары.Загрузить(Результат.Выгрузить()); НовыйДокумент.Оплата.Загрузить(Оплаты); НовыйДокумент.Организация= ВыбраннаяОрганизация; НовыйДокумент.Склад=ВыбранныйСклад; //Объект.Товары.Загрузить(Результат.Выгрузить()); //Объект.Оплата.Загрузить(Оплаты); ИтогСуммы = Объект.Товары.Итог("Сумма"); ИтогОплат = Объект.Оплата.Итог("Сумма"); Если ИтогСуммы <> ИтогОплат Тогда Если Объект.Оплата.Количество() = 1 Тогда ФормаОплат = Объект.Оплата.Получить(0); ФормаОплат.Сумма = ИтогСуммы; // //Денис+ ФормаОплатНД=НовыйДокумент.Оплата.Получить(0); ФормаОплатНД.Сумма= ИтогСуммы; // //Денис- Иначе Для Каждого ФормаОплат Из Объект.Оплата Цикл Если НомерПрохода Тогда СуммаОплаты = ИтогСуммы * Окр(ФормаОплат.Сумма / ИтогОплат, 2); СписокОплат.Добавить(ФормаОплат.Сумма - СуммаОплаты); ФормаОплат.Сумма = СуммаОплаты; ////Денис+ ФормаОплатНД.Сумма=СуммаОплаты; ////Денис- Иначе ФормаОплат.Сумма = СписокОплат.Получить(ФормаОплат.НомерСтроки - 1).Значение; ////Денис+ ФормаОплатНД.Сумма=СписокОплат.Получить(ФормаОплат.НомерСтроки - 1).Значение; ////Денис- КонецЕсли; КонецЦикла; НомерПрохода = 0; КонецЕсли; КонецЕсли; НовыйДокумент.Дата=ТекущаяДата(); НовыйДокумент.ВидОперации=Перечисления.ВидыОперацийРозничнаяПродажа.Продажа; ВалютаРегламентированногоУчета = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета(); НовыйДокумент.ВалютаДокумента= ВалютаРегламентированногоУчета; НовыйДокумент.Записать(); //НовыйДокумент.Ссылка // ДокуменЧекНапробитие= НовыйДокумент.Ссылка; КонецЕсли; //Ничего не меняем КонецПроцедуры //Денис- |
|||
|
11
Deni1c
02.11.17
✎
04:03
|
При подборе номеклатуры еще сделал вывод в табличную часть остатков в разрезе складов
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |