Имя: Пароль:
1C
1С v8
не найти созданный программно документ в базе
,
0 zippygrill
 
11.06.13
12:06
честное слово :) создаю программно. режим УФ. вот процедура

&НаСервере
Процедура СоздатьДокументНаСервер()

   ОтчетОРозничныхПродажах = СоздатьОтчетОРозничныхПродажах();
       //дальше идут запросы и заполнение

               //Записываем ОтчетОРозничныхПродажах.
       Если Не ОтменитьТранзакцию
            И (ОтчетОРозничныхПродажах.Товары.Количество() > 0
          Или ОтчетОРозничныхПродажах.ВозвращенныеТовары.Количество() > 0) Тогда
           
           //Оплаты
           
           ОтчетОРозничныхПродажах.ОплатаПодарочнымиСертификатами = ОплатаПодарочнымиСертификатами;
           
           Для Каждого СтрокаОплаты Из ТаблицаОплатПлатежныеКарты Цикл
               НоваяСтрока = ОтчетОРозничныхПродажах.ОплатаПлатежнымиКартами.Добавить();
               ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаОплаты);
           КонецЦикла;

           
           ОтчетОРозничныхПродажах.Комментарий = "программно";
                       //тут точка останова есть и смотрю содержимое документа. данные присутствуют!
           УстановитьПривилегированныйРежим(Истина);
               ОтчетОРозничныхПродажах.Записать(РежимЗаписиДокумента.Запись);
           УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры;

ищу в базе свой документ но его нет похоже! Где ошибся?
1 Kreont
 
11.06.13
12:12
а запросом его можешь найти?
2 Mitriy
 
11.06.13
12:18
отборы в форме списка посмотри...
3 RomanYS
 
11.06.13
12:21
журнал регистрации посмотри
4 zippygrill
 
11.06.13
12:48
(1) запросом найти его не удалось
(2) отборы в форме списка нет
(3) вот такая фигня в ЖР https://dl.dropboxusercontent.com/u/9627383/Screens/ЖР.jpg
5 zippygrill
 
11.06.13
12:49
по скрину что это значит?
6 YF
 
11.06.13
12:49
(0) как бы  СоздатьОтчетОРозничныхПродажах() ни о чем не говорит
7 zippygrill
 
11.06.13
12:50
(6)

&НаСервере
// Функция осуществляет создание нового документа "Отчёт о розничных продажах".
//
// Параметры:
//  ОблагаетсяЕНВД                           - <Булево>, <Неопределено>
//                                           - Розничная торговля облагается ЕНВД.
//
// Возвращаемое значение:
//  <ДокументОбъект.ОтчетОРозничныхПродажах> - Созданный документ.
//
Функция СоздатьОтчетОРозничныхПродажах()

   ТекущаяДата   = ТекущаяДата();
   ДатаДокумента = КонецДня(Объект.ДатаДокумента);
   
   Отчет               = Документы.ОтчетОРозничныхПродажах.СоздатьДокумент();
   Отчет.Дата          = ДатаДокумента;
   Отчет.КассаККМ      = Объект.КассаККМ;
   Отчет.Магазин       = Отчет.КассаККМ.Магазин;
   Отчет.Ответственный = Объект.Ответственный;
   Отчет.Организация   = Объект.Организация;

   Отчет.УчитыватьНДС     = Ложь;
   Отчет.ЦенаВключаетНДС  = ОбщегоНазначенияРТСервер.ПолучитьЗначениеРеквизитаВПривилегированномРежиме(Отчет.Магазин.ПравилоЦенообразования, "ЦенаВключаетНДС");

   Возврат Отчет;

КонецФункции
8 1Сергей
 
11.06.13
12:51
(5) что ты зашёл под пользователем "Булига"
9 zippygrill
 
11.06.13
12:51
и rls чтоли?
10 1Сергей
 
11.06.13
12:51
(7) и где Записать?
11 YF
 
11.06.13
12:52
(7) В той же процедуре, где создаешь документ пробовал его записывать?
12 zippygrill
 
11.06.13
12:52
(10) функция из (7) делает возврат же :)
13 zippygrill
 
11.06.13
12:52
(11) нет, не пробовал.
14 YF
 
11.06.13
12:53
(13) а попробуй
15 1Сергей
 
11.06.13
12:54
(13) а отладчик доходит до записи?
16 zippygrill
 
11.06.13
12:55
(14) пробовал, все четко.
(15) доходит конечно. сейчас всю типовую процедуру выложу.
17 ДенисЧ
 
11.06.13
12:56
У меня такая ботва была...
Решили проблему - была повторная транзакция без закрытия первой...
18 zippygrill
 
11.06.13
12:58
(17) похоже такая же батва и тут, потому что в коде используется это
19 zippygrill
 
11.06.13
12:58
&НаСервере
Процедура СоздатьДокументНаСервер()

   РежимПроведения = РежимПроведенияДокумента.Оперативный;

   МассивДокументовКПроведению = Новый Массив;

   ОтчетОРозничныхПродажах = СоздатьОтчетОРозничныхПродажах();
   Возврат;
   
   ЗапросПоЧекам = Новый Запрос;
   ЗапросПоЧекам.УстановитьПараметр("КассаККМ", Объект.КассаККМ);
   ЗапросПоЧекам.УстановитьПараметр("ДатаНачала", НачалоДня(Дата('20130610')));
   ЗапросПоЧекам.УстановитьПараметр("ДатаОкончания", КонецДня(Дата('20130610')));

   ЗапросПоЧекам.Текст =
   "ВЫБРАТЬ РАЗРЕШЕННЫЕ
   |    Док.Ссылка КАК Ссылка
   |ИЗ
   |    Документ.ЧекККМ КАК Док
   |ГДЕ
   |    Док.КассаККМ = &КассаККМ
   |    И Док.Ссылка.Проведен
   |    И Док.Ссылка.СтатусЧекаККМ = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Архивный)
   |    И Док.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаОкончания, ДЕНЬ)
   |
   |ДЛЯ ИЗМЕНЕНИЯ
   |    Документ.ЧекККМ";

   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("КассаККМ"          , Объект.КассаККМ);
   Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(Дата('20130610')));
   Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(Дата('20130610')));
   Запрос.Текст =
   "ВЫБРАТЬ РАЗРЕШЕННЫЕ
   |    ТоварыОбщие.ИспользоватьСерийныеНомера,
   |    ТоварыОбщие.ДисконтнаяКарта,
   |    ТоварыОбщие.Склад,
   |    ТоварыОбщие.Номенклатура,
   |    ТоварыОбщие.Характеристика,
   |    ТоварыОбщие.Продавец,
   |    ТоварыОбщие.Количество,
   |    ТоварыОбщие.Цена,
   |    ТоварыОбщие.СтавкаНДС,
   |    ТоварыОбщие.СуммаНДС,
   |    ТоварыОбщие.Сумма,
   |    ТоварыОбщие.Упаковка,
   |    ТоварыОбщие.КоличествоУпаковок,
   |    ТоварыОбщие.СсылкаДляСерийныхСертификатов,
   |    ТоварыОбщие.КлючСвязиСерийныхНомеров
   |ПОМЕСТИТЬ ТаблицаТовары
   |ИЗ
   |    (ВЫБРАТЬ
   |        Док.Номенклатура.ИспользоватьСерийныеНомера КАК ИспользоватьСерийныеНомера,
   |        Док.Ссылка.ДисконтнаяКарта КАК ДисконтнаяКарта,
   |        Док.Склад КАК Склад,
   |        Док.Номенклатура КАК Номенклатура,
   |        Док.Характеристика КАК Характеристика,
   |        Док.Продавец КАК Продавец,
   |        СУММА(ВЫБОР
   |                КОГДА Док.Ссылка.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Продажа)
   |                    ТОГДА Док.Количество
   |                ИНАЧЕ -Док.Количество
   |            КОНЕЦ) КАК Количество,
   |        Док.Цена КАК Цена,
   |        Док.СтавкаНДС КАК СтавкаНДС,
   |        СУММА(ВЫБОР
   |                КОГДА Док.Ссылка.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Продажа)
   |                    ТОГДА Док.СуммаНДС
   |                ИНАЧЕ -Док.СуммаНДС
   |            КОНЕЦ) КАК СуммаНДС,
   |        СУММА(ВЫБОР
   |                КОГДА Док.Ссылка.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Продажа)
   |                    ТОГДА Док.Сумма
   |                ИНАЧЕ -Док.Сумма
   |            КОНЕЦ) КАК Сумма,
   |        Док.Упаковка КАК Упаковка,
   |        СУММА(ВЫБОР
   |                КОГДА Док.Ссылка.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Продажа)
   |                    ТОГДА Док.КоличествоУпаковок
   |                ИНАЧЕ -Док.КоличествоУпаковок
   |            КОНЕЦ) КАК КоличествоУпаковок,
   |        ВЫБОР
   |            КОГДА Док.Номенклатура.ИспользоватьСерийныеНомера
   |                ТОГДА Док.Ссылка
   |            ИНАЧЕ ЗНАЧЕНИЕ(Документ.ЧекККМ.ПустаяСсылка)
   |        КОНЕЦ КАК СсылкаДляСерийныхСертификатов,
   |        ВЫБОР
   |            КОГДА Док.Номенклатура.ИспользоватьСерийныеНомера
   |                ТОГДА Док.КлючСвязиСерийныхНомеров
   |            ИНАЧЕ 0
   |        КОНЕЦ КАК КлючСвязиСерийныхНомеров
   |    ИЗ
   |        Документ.ЧекККМ.Товары КАК Док
   |    ГДЕ
   |        Док.Ссылка.КассаККМ = &КассаККМ
   |        И Док.Ссылка.Проведен
   |        И Док.Ссылка.СтатусЧекаККМ = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Архивный)
   |        И Док.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаОкончания, ДЕНЬ)
   |    
   |    СГРУППИРОВАТЬ ПО
   |        Док.Ссылка.ДисконтнаяКарта,
   |        Док.Склад,
   |        Док.Номенклатура,
   |        Док.Характеристика,
   |        Док.Продавец,
   |        Док.СтавкаНДС,
   |        Док.Цена,
   |        Док.Номенклатура.ИспользоватьСерийныеНомера,
   |        Док.Упаковка,
   |        ВЫБОР
   |            КОГДА Док.Номенклатура.ИспользоватьСерийныеНомера
   |                ТОГДА Док.Ссылка
   |            ИНАЧЕ ЗНАЧЕНИЕ(Документ.ЧекККМ.ПустаяСсылка)
   |        КОНЕЦ,
   |        ВЫБОР
   |            КОГДА Док.Номенклатура.ИспользоватьСерийныеНомера
   |                ТОГДА Док.КлючСвязиСерийныхНомеров
   |            ИНАЧЕ 0
   |        КОНЕЦ
   |    
   |    ИМЕЮЩИЕ
   |        СУММА(ВЫБОР
   |                КОГДА Док.Ссылка.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Продажа)
   |                    ТОГДА Док.Количество
   |                ИНАЧЕ -Док.Количество
   |            КОНЕЦ) <> 0) КАК ТоварыОбщие
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ
   |    ТаблицаТовары.ИспользоватьСерийныеНомера,
   |    ТаблицаТовары.ДисконтнаяКарта,
   |    ТаблицаТовары.Склад,
   |    ТаблицаТовары.Номенклатура,
   |    ТаблицаТовары.Характеристика,
   |    ТаблицаТовары.Продавец,
   |    СУММА(ТаблицаТовары.Количество) КАК Количество,
   |    ТаблицаТовары.Цена,
   |    ТаблицаТовары.СтавкаНДС,
   |    СУММА(ТаблицаТовары.СуммаНДС) КАК СуммаНДС,
   |    СУММА(ТаблицаТовары.Сумма) КАК Сумма,
   |    ТаблицаТовары.Упаковка,
   |    СУММА(ТаблицаТовары.КоличествоУпаковок) КАК КоличествоУпаковок
   |ИЗ
   |    ТаблицаТовары КАК ТаблицаТовары
   |
   |СГРУППИРОВАТЬ ПО
   |    ТаблицаТовары.Склад,
   |    ТаблицаТовары.ДисконтнаяКарта,
   |    ТаблицаТовары.Номенклатура,
   |    ТаблицаТовары.Характеристика,
   |    ТаблицаТовары.СтавкаНДС,
   |    ТаблицаТовары.ИспользоватьСерийныеНомера,
   |    ТаблицаТовары.Продавец,
   |    ТаблицаТовары.Упаковка,
   |    ТаблицаТовары.Цена
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ
   |    ТаблицаТовары.ИспользоватьСерийныеНомера,
   |    ТаблицаТовары.ДисконтнаяКарта,
   |    ТаблицаТовары.Склад,
   |    ТаблицаТовары.Номенклатура,
   |    ТаблицаТовары.Характеристика,
   |    ТаблицаТовары.Продавец,
   |    ТаблицаТовары.Количество,
   |    ТаблицаТовары.Цена,
   |    ТаблицаТовары.СтавкаНДС,
   |    ТаблицаТовары.СуммаНДС,
   |    ТаблицаТовары.Сумма,
   |    ТаблицаТовары.Упаковка,
   |    ТаблицаТовары.КоличествоУпаковок,
   |    ТаблицаТовары.СсылкаДляСерийныхСертификатов,
   |    ТаблицаТовары.КлючСвязиСерийныхНомеров
   |ПОМЕСТИТЬ ТаблицаСерийныхСертификатов
   |ИЗ
   |    ТаблицаТовары КАК ТаблицаТовары
   |ГДЕ
   |    ТаблицаТовары.ИспользоватьСерийныеНомера
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ
   |    ВложенныйЗапрос.СерийныйНомер,
   |    ВложенныйЗапрос.ДисконтнаяКарта,
   |    ВложенныйЗапрос.Склад,
   |    ВложенныйЗапрос.Номенклатура,
   |    ВложенныйЗапрос.Характеристика,
   |    ВложенныйЗапрос.Продавец,
   |    ВложенныйЗапрос.Цена,
   |    ВложенныйЗапрос.СтавкаНДС,
   |    ВложенныйЗапрос.Упаковка
   |ИЗ
   |    (ВЫБРАТЬ
   |        ЧекККМСерийныеНомера.СерийныйНомер КАК СерийныйНомер,
   |        ТаблицаСерийныхСертификатов.ДисконтнаяКарта КАК ДисконтнаяКарта,
   |        ТаблицаСерийныхСертификатов.Склад КАК Склад,
   |        ТаблицаСерийныхСертификатов.Номенклатура КАК Номенклатура,
   |        ТаблицаСерийныхСертификатов.Характеристика КАК Характеристика,
   |        ТаблицаСерийныхСертификатов.Продавец КАК Продавец,
   |        ТаблицаСерийныхСертификатов.Цена КАК Цена,
   |        ТаблицаСерийныхСертификатов.СтавкаНДС КАК СтавкаНДС,
   |        ТаблицаСерийныхСертификатов.Упаковка КАК Упаковка
   |    ИЗ
   |        ТаблицаСерийныхСертификатов КАК ТаблицаСерийныхСертификатов
   |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЧекККМ.СерийныеНомера КАК ЧекККМСерийныеНомера
   |            ПО ТаблицаСерийныхСертификатов.СсылкаДляСерийныхСертификатов = ЧекККМСерийныеНомера.Ссылка
   |                И ТаблицаСерийныхСертификатов.КлючСвязиСерийныхНомеров = ЧекККМСерийныеНомера.КлючСвязиСерийныхНомеров
   |    ГДЕ
   |        ЧекККМСерийныеНомера.Ссылка.КассаККМ = &КассаККМ
   |        И ЧекККМСерийныеНомера.Ссылка.Проведен
   |        И ЧекККМСерийныеНомера.Ссылка.СтатусЧекаККМ = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Архивный)
   |        И ЧекККМСерийныеНомера.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаОкончания, ДЕНЬ)) КАК ВложенныйЗапрос";

   
   ЗапросПоВозвратам = Новый Запрос;
   ЗапросПоВозвратам.УстановитьПараметр("КассаККМ"          , Объект.КассаККМ);
   ЗапросПоВозвратам.УстановитьПараметр("ВидОперацииВозврат", Перечисления.ВидыОперацийЧекККМ.Возврат);
   ЗапросПоВозвратам.УстановитьПараметр("ДатаНачала", НачалоДня(Дата('20130610')));
   ЗапросПоВозвратам.УстановитьПараметр("ДатаОкончания", КонецДня(Дата('20130610')));
   ЗапросПоВозвратам.Текст =
   "ВЫБРАТЬ
   |    ТоварыБезКомплектов.ДисконтнаяКарта,
   |    ТоварыБезКомплектов.Склад,
   |    ТоварыБезКомплектов.Номенклатура,
   |    ТоварыБезКомплектов.Характеристика,
   |    ТоварыБезКомплектов.Продавец,
   |    ТоварыБезКомплектов.Количество,
   |    ТоварыБезКомплектов.ВидОперации,
   |    ТоварыБезКомплектов.АналитикаХозяйственнойОперации,
   |    ТоварыБезКомплектов.Цена,
   |    ТоварыБезКомплектов.СтавкаНДС,
   |    ТоварыБезКомплектов.СуммаНДС,
   |    ТоварыБезКомплектов.Сумма,
   |    ТоварыБезКомплектов.Упаковка,
   |    ТоварыБезКомплектов.КоличествоУпаковок
   |ИЗ
   |    (ВЫБРАТЬ
   |        Док.Ссылка.ДисконтнаяКарта КАК ДисконтнаяКарта,
   |        Док.Склад КАК Склад,
   |        Док.Номенклатура КАК Номенклатура,
   |        Док.Характеристика КАК Характеристика,
   |        Док.Продавец КАК Продавец,
   |        СУММА(Док.Количество) КАК Количество,
   |        Док.Ссылка.ВидОперации КАК ВидОперации,
   |        Док.Ссылка.АналитикаХозяйственнойОперации КАК АналитикаХозяйственнойОперации,
   |        Док.Цена КАК Цена,
   |        Док.СтавкаНДС КАК СтавкаНДС,
   |        Док.СуммаНДС КАК СуммаНДС,
   |        СУММА(Док.Сумма) КАК Сумма,
   |        Док.Упаковка КАК Упаковка,
   |        СУММА(Док.КоличествоУпаковок) КАК КоличествоУпаковок
   |    ИЗ
   |        Документ.ЧекККМ.Товары КАК Док
   |    ГДЕ
   |        Док.Ссылка.ВидОперации = &ВидОперацииВозврат
   |        И Док.Ссылка.КассаККМ = &КассаККМ
   |        И Док.Ссылка.Проведен
   |        И Док.Ссылка.СтатусЧекаККМ = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Архивный)
   |        И Док.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаОкончания, ДЕНЬ)
   |    
   |    СГРУППИРОВАТЬ ПО
   |        Док.Ссылка.ДисконтнаяКарта,
   |        Док.Склад,
   |        Док.Номенклатура,
   |        Док.Характеристика,
   |        Док.Продавец,
   |        Док.Ссылка.ВидОперации,
   |        Док.Ссылка.АналитикаХозяйственнойОперации,
   |        Док.СтавкаНДС,
   |        Док.СуммаНДС,
   |        Док.Цена,
   |        Док.Упаковка) КАК ТоварыБезКомплектов";
   
   ЗапросПоОплате = Новый Запрос(
   "ВЫБРАТЬ РАЗРЕШЕННЫЕ
   |    Док.ВидОплаты.ТипОплаты КАК ТипОплаты,
   |    Док.ВидОплаты КАК ВидОплаты,
   |    СУММА(ВЫБОР
   |            КОГДА Док.Ссылка.ВидОперации = &ВидОперацииПродажа
   |                ТОГДА Док.Сумма
   |            ИНАЧЕ -1 * Док.Сумма
   |        КОНЕЦ) КАК Сумма,
   |    Док.ПроцентТорговойУступки,
   |    СУММА(ВЫБОР
   |            КОГДА Док.Ссылка.ВидОперации = &ВидОперацииПродажа
   |                ТОГДА Док.СуммаТорговойУступки
   |            ИНАЧЕ -1 * Док.СуммаТорговойУступки
   |        КОНЕЦ) КАК СуммаТорговойУступки,
   |    Док.ЭквайринговыйТерминал
   |ИЗ
   |    Документ.ЧекККМ.Оплата КАК Док
   |ГДЕ
   |    Док.Ссылка.КассаККМ = &КассаККМ
   |    И Док.Ссылка.Проведен
   |    И  Док.Ссылка.СтатусЧекаККМ = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Архивный)
   |    И Док.ВидОплаты.ТипОплаты <> &ТипОплатыНаличные
   |    И Док.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаОкончания, ДЕНЬ)

   |
   |СГРУППИРОВАТЬ ПО
   |    Док.Ссылка,
   |    Док.НомерСтроки,
   |    Док.ВидОплаты.ТипОплаты,
   |    Док.ПроцентТорговойУступки,
   |    Док.ВидОплаты,
   |    Док.ЭквайринговыйТерминал");

   ЗапросПоОплате.УстановитьПараметр("ДатаНачала", НачалоДня(Дата('20130610')));
   ЗапросПоОплате.УстановитьПараметр("ДатаОкончания", КонецДня(Дата('20130610')));
   ЗапросПоОплате.УстановитьПараметр("КассаККМ"          , Объект.КассаККМ);
   ЗапросПоОплате.УстановитьПараметр("ВидОперацииПродажа", Перечисления.ВидыОперацийЧекККМ.Продажа);
   ЗапросПоОплате.УстановитьПараметр("ТипОплатыНаличные" , Перечисления.ТипыОплатЧекаККМ.Наличные);

   ЗапросПоПодарочнымСертификатам = Новый Запрос;
   ЗапросПоПодарочнымСертификатам.Текст =
   "ВЫБРАТЬ РАЗРЕШЕННЫЕ
   |    ЧекККМПогашениеПодарочныхСертификатов.ПодарочныйСертификат,
   |    ЧекККМПогашениеПодарочныхСертификатов.СерийныйНомер,
   |    1 КАК Количество
   |ПОМЕСТИТЬ ТаблицаПогашения
   |ИЗ
   |    Документ.ЧекККМ.ПогашениеПодарочныхСертификатов КАК ЧекККМПогашениеПодарочныхСертификатов
   |ГДЕ
   |    ЧекККМПогашениеПодарочныхСертификатов.Ссылка.КассаККМ = &КассаККМ
   |    И ЧекККМПогашениеПодарочныхСертификатов.Ссылка.Проведен
   |    И ЧекККМПогашениеПодарочныхСертификатов.Ссылка.СтатусЧекаККМ = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Архивный)
   |    И ЧекККМПогашениеПодарочныхСертификатов.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаОкончания, ДЕНЬ)
   |
   |СГРУППИРОВАТЬ ПО
   |    ЧекККМПогашениеПодарочныхСертификатов.Ссылка,
   |    ЧекККМПогашениеПодарочныхСертификатов.НомерСтроки,
   |    ЧекККМПогашениеПодарочныхСертификатов.ПодарочныйСертификат,
   |    ЧекККМПогашениеПодарочныхСертификатов.СерийныйНомер
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ
   |    ТаблицаПогашения.ПодарочныйСертификат,
   |    ТаблицаПогашения.СерийныйНомер,
   |    СУММА(ТаблицаПогашения.Количество) КАК Количество
   |ИЗ
   |    ТаблицаПогашения КАК ТаблицаПогашения
   |
   |СГРУППИРОВАТЬ ПО
   |    ТаблицаПогашения.ПодарочныйСертификат,
   |    ТаблицаПогашения.СерийныйНомер";
   
   ЗапросПоПодарочнымСертификатам.УстановитьПараметр("ДатаНачала", НачалоДня(Дата('20130610')));
   ЗапросПоПодарочнымСертификатам.УстановитьПараметр("ДатаОкончания", КонецДня(Дата('20130610')));
   ЗапросПоПодарочнымСертификатам.УстановитьПараметр("КассаККМ", Объект.КассаККМ);
   
   ЗапросПоОтложеннымЧекам = Новый Запрос("
   |ВЫБРАТЬ РАЗРЕШЕННЫЕ
   |    Док.Ссылка КАК ОтложенныйЧек
   |ИЗ
   |    Документ.ЧекККМ КАК Док
   |ГДЕ
   |    Док.КассаККМ = &КассаККМ
   |    И Док.Ссылка.СтатусЧекаККМ = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Отложенный)");

   ЗапросПоОтложеннымЧекам.УстановитьПараметр("КассаККМ"             , Объект.КассаККМ);

   ЗапросПоПодаркам = Новый Запрос(
   "ВЫБРАТЬ РАЗРЕШЕННЫЕ
   |    Док.Номенклатура,
   |    Док.Характеристика,
   |    СУММА(ВЫБОР
   |            КОГДА Док.Ссылка.ВидОперации = &ВидОперацииПродажа
   |                ТОГДА Док.Количество
   |            ИНАЧЕ -1 * Док.Количество
   |        КОНЕЦ) КАК Количество,
   |    Док.Склад КАК Склад,
   |    Док.Цена КАК Цена,
   |    СУММА(ВЫБОР
   |            КОГДА Док.Ссылка.ВидОперации = &ВидОперацииПродажа
   |                ТОГДА Док.Сумма
   |            ИНАЧЕ -1 * Док.Сумма
   |        КОНЕЦ) КАК Сумма,
   |    Док.Упаковка,
   |    СУММА(ВЫБОР
   |            КОГДА Док.Ссылка.ВидОперации = &ВидОперацииПродажа
   |                ТОГДА Док.КоличествоУпаковок
   |            ИНАЧЕ -1 * Док.КоличествоУпаковок
   |        КОНЕЦ) КАК КоличествоУпаковок
   |ИЗ
   |    Документ.ЧекККМ.Подарки КАК Док
   |ГДЕ
   |    Док.Ссылка.КассаККМ = &КассаККМ
   |    И Док.Ссылка.Проведен
   |    И Док.Ссылка.СтатусЧекаККМ = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Архивный)
   |    И Док.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаОкончания, ДЕНЬ)
   |
   |СГРУППИРОВАТЬ ПО
   |    Док.Номенклатура,
   |    Док.Характеристика,
   |    Док.Склад,
   |    Док.Цена,
   |    Док.Упаковка
   |
   |ИМЕЮЩИЕ
   |    СУММА(ВЫБОР
   |            КОГДА Док.Ссылка.ВидОперации = &ВидОперацииПродажа
   |                ТОГДА Док.Количество
   |            ИНАЧЕ -1 * Док.Количество
   |        КОНЕЦ) <> 0
   |ИТОГИ ПО
   |    Склад");
   
   ЗапросПоПодаркам.УстановитьПараметр("ДатаНачала", НачалоДня(Дата('20130610')));
   ЗапросПоПодаркам.УстановитьПараметр("ДатаОкончания", КонецДня(Дата('20130610')));
   ЗапросПоПодаркам.УстановитьПараметр("КассаККМ"          , Объект.КассаККМ);
   ЗапросПоПодаркам.УстановитьПараметр("ВидОперацииПродажа", Перечисления.ВидыОперацийЧекККМ.Продажа);
   
   ЗапросПоСериям = Новый Запрос;
   ЗапросПоСериям.УстановитьПараметр("КассаККМ", Объект.КассаККМ);
   ЗапросПоСериям.УстановитьПараметр("ДатаНачала", НачалоДня(Дата('20130610')));
   ЗапросПоСериям.УстановитьПараметр("ДатаОкончания", КонецДня(Дата('20130610')));

   ЗапросПоСериям.Текст =
   "ВЫБРАТЬ РАЗРЕШЕННЫЕ
   |    Док.Ссылка КАК Ссылка,
   |    Док.ВидОперации
   |ПОМЕСТИТЬ ТаблицаЧеков
   |ИЗ
   |    Документ.ЧекККМ КАК Док
   |ГДЕ
   |    Док.КассаККМ = &КассаККМ
   |    И Док.Ссылка.Проведен
   |    И Док.Ссылка.СтатусЧекаККМ = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Архивный)
   |    И Док.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаОкончания, ДЕНЬ)
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ
   |    ЧекККМСерии.Серия,
   |    СУММА(ВЫБОР
   |            КОГДА ТаблицаЧеков.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Продажа)
   |                ТОГДА ЧекККМСерии.Количество
   |            ИНАЧЕ -ЧекККМСерии.Количество
   |        КОНЕЦ) КАК Количество,
   |    ЧекККМСерии.Номенклатура,
   |    ЧекККМСерии.Характеристика
   |ИЗ
   |    Документ.ЧекККМ.Серии КАК ЧекККМСерии
   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаЧеков КАК ТаблицаЧеков
   |        ПО ЧекККМСерии.Ссылка = ТаблицаЧеков.Ссылка
   |
   |СГРУППИРОВАТЬ ПО
   |    ЧекККМСерии.Серия,
   |    ЧекККМСерии.Номенклатура,
   |    ЧекККМСерии.Характеристика
   |
   |ИМЕЮЩИЕ
   |    СУММА(ВЫБОР
   |            КОГДА ТаблицаЧеков.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Продажа)
   |                ТОГДА ЧекККМСерии.Количество
   |            ИНАЧЕ -ЧекККМСерии.Количество
   |        КОНЕЦ) > 0";
   
   
   ОтменитьТранзакцию = Ложь;
   НачатьТранзакцию();

   РезультатЗапросаПоЧекам           = ЗапросПоЧекам.Выполнить();
   МассивРезультатовЗапроса          = Запрос.ВыполнитьПакет();
   РезультатЗапросаПоВозвратам       = ЗапросПоВозвратам.Выполнить();
   РезультатЗапросаПоОплате          = ЗапросПоОплате.Выполнить();
   РезультатЗапросаПоОтложеннымЧекам = ЗапросПоОтложеннымЧекам.Выполнить();
   РезультатЗапросаПоПодаркам        = ЗапросПоПодаркам.Выполнить();
   РезультатЗапросаПоСериям          = ЗапросПоСериям.Выполнить();
   РезультатПодарочныеСертификаты    = ЗапросПоПодарочнымСертификатам.Выполнить();
   
   ТаблицаОплатПлатежныеКарты = ОбщегоНазначенияРТ.ОтобратьСтрокиПоКритериям(РезультатЗапросаПоОплате,
      Новый Структура("ТипОплаты", Перечисления.ТипыОплатЧекаККМ.ПлатежнаяКарта)).Выгрузить();

   ТаблицаОплатБанковскиеКредиты = ОбщегоНазначенияРТ.ОтобратьСтрокиПоКритериям(РезультатЗапросаПоОплате,
      Новый Структура("ТипОплаты", Перечисления.ТипыОплатЧекаККМ.БанковскийКредит)).Выгрузить();

   ТаблицаОплатСертификатом      = ОбщегоНазначенияРТ.ОтобратьСтрокиПоКритериям(РезультатЗапросаПоОплате,
      Новый Структура("ВидОплаты", Справочники.ВидыОплатЧекаККМ.ОплатаПодарочнымСертификатом)).Выгрузить();
   
   ОплатаПодарочнымиСертификатами = ТаблицаОплатСертификатом.Итог("Сумма");
   
   Если МассивРезультатовЗапроса[1].Пустой() И РезультатЗапросаПоВозвратам.Пустой() Тогда
       ОтменитьТранзакцию = Истина;
       Текст = НСтр("ru = 'За кассовую смену не продано ни одного товара по выбранной кассе ККМ.'");
       ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
           Текст,
           Объект);
       ОтменитьТранзакцию();
   Иначе
       
       ТаблицаСерийныеНомера = МассивРезультатовЗапроса[3].Выгрузить();
       КэшированныеЗначения = Новый Структура;
       
       СтруктураЗаполненияЦены = Новый Структура;
       СтруктураЗаполненияЦены.Вставить("ЦенаВключаетНДС", ОтчетОРозничныхПродажах.ЦенаВключаетНДС);
       
       СтруктураДействий = Новый Структура;
       СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураЗаполненияЦены);
       ТекущийКлючСерийныеСертификатов = 0;
       
       Выборка = МассивРезультатовЗапроса[1].Выбрать();
       Пока Выборка.Следующий() Цикл
           Если Не ОтменитьТранзакцию Тогда
               СтрокаТабличнойЧасти = ОтчетОРозничныхПродажах.Товары.Добавить();
               ЗаполнитьЗначенияСвойств(СтрокаТабличнойЧасти, Выборка);
               
               ОбработкаТабличнойЧастиТоварыСервер.ПересчитатьСуммуНДСВСтрокеТЧСервер(СтрокаТабличнойЧасти, СтруктураДействий, КэшированныеЗначения);
               
               Если СтрокаТабличнойЧасти.СтавкаНДС <> Перечисления.СтавкиНДС.БезНДС Тогда
                   ОтчетОРозничныхПродажах.УчитыватьНДС = Истина;
               КонецЕсли;
               
               Если Выборка.ИспользоватьСерийныеНомера Тогда
                   
                   СтруктраПоиска = Новый Структура;
                   СтруктраПоиска.Вставить("ДисконтнаяКарта", Выборка.ДисконтнаяКарта);
                   СтруктраПоиска.Вставить("Склад"          , Выборка.Склад);
                   СтруктраПоиска.Вставить("Номенклатура"   , Выборка.Номенклатура);
                   СтруктраПоиска.Вставить("Характеристика" , Выборка.Характеристика);
                   СтруктраПоиска.Вставить("Продавец"       , Выборка.Продавец);
                   СтруктраПоиска.Вставить("Цена"           , Выборка.Цена);
                   СтруктраПоиска.Вставить("СтавкаНДС"      , Выборка.СтавкаНДС);
                   СтруктраПоиска.Вставить("Упаковка"       , Выборка.Упаковка);
                   
                   ТекущийКлючСерийныеСертификатов = ТекущийКлючСерийныеСертификатов + 1;
                   
                   СтрокаТабличнойЧасти.КлючСвязиСерийныхНомеров = ТекущийКлючСерийныеСертификатов;
                   
                   СтрокиТаблицаСерийныхНомеров = ТаблицаСерийныеНомера.НайтиСтроки(СтруктраПоиска);
                   Для каждого СтрокаТаблицыСерийныхНомеров Из СтрокиТаблицаСерийныхНомеров Цикл
                       СтрокаСерийныхНомеров = ОтчетОРозничныхПродажах.СерийныеНомера.Добавить();
                       СтрокаСерийныхНомеров.СерийныйНомер = СтрокаТаблицыСерийныхНомеров.СерийныйНомер;
                       СтрокаСерийныхНомеров.КлючСвязиСерийныхНомеров = СтрокаТабличнойЧасти.КлючСвязиСерийныхНомеров;
                   КонецЦикла;
                   
               КонецЕсли;
               
           КонецЕсли;
       КонецЦикла;
       
       ВыборкаПоВозвратам = РезультатЗапросаПоВозвратам.Выбрать();
       Пока ВыборкаПоВозвратам.Следующий() Цикл
           Если Не ОтменитьТранзакцию Тогда
               
               СтрокаТабличнойЧасти = ОтчетОРозничныхПродажах.ВозвращенныеТовары.Добавить();
               ЗаполнитьЗначенияСвойств(СтрокаТабличнойЧасти, ВыборкаПоВозвратам);
               
               ОбработкаТабличнойЧастиТоварыСервер.ПересчитатьСуммуНДСВСтрокеТЧСервер(СтрокаТабличнойЧасти, СтруктураДействий, КэшированныеЗначения);
               
               
           КонецЕсли;
       КонецЦикла;
       
       Если Не ОтменитьТранзакцию
            И (ОтчетОРозничныхПродажах.Товары.Количество() > 0) Тогда
           
           ТаблицаПоСериям = РезультатЗапросаПоСериям.Выгрузить();
           ОтчетОРозничныхПродажах.Серии.Загрузить(ТаблицаПоСериям);
           
           ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(Документы.ОтчетОРозничныхПродажах.ПараметрыУказанияСерий(Объект));
           ОбработкаТабличнойЧастиТоварыСервер.ЗаполнитьСтатусыУказанияСерий(ОтчетОРозничныхПродажах,ПараметрыУказанияСерий);
           
       КонецЕсли;
       

       //Записываем ОтчетОРозничныхПродажах.
       Если Не ОтменитьТранзакцию
            И (ОтчетОРозничныхПродажах.Товары.Количество() > 0
          Или ОтчетОРозничныхПродажах.ВозвращенныеТовары.Количество() > 0) Тогда
           
           //Оплаты
           
           ОтчетОРозничныхПродажах.ОплатаПодарочнымиСертификатами = ОплатаПодарочнымиСертификатами;
           
           Для Каждого СтрокаОплаты Из ТаблицаОплатПлатежныеКарты Цикл
               НоваяСтрока = ОтчетОРозничныхПродажах.ОплатаПлатежнымиКартами.Добавить();
               ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаОплаты);
           КонецЦикла;

           
           ОтчетОРозничныхПродажах.Комментарий = "программно";
           УстановитьПривилегированныйРежим(Истина);
               ОтчетОРозничныхПродажах.Записать(РежимЗаписиДокумента.Запись);
           УстановитьПривилегированныйРежим(Ложь);

       КонецЕсли;

   КонецЕсли;

КонецПроцедуры
20 zippygrill
 
11.06.13
13:01
в (19) забыл комментировать Возврат
21 zippygrill
 
11.06.13
13:02
нда, добавил ЗафиксироватьТранзакцию() и документ появился.
спс человеку который СП торгует :)
22 Maxus43
 
11.06.13
13:05
дак написано же ОТМЕНЕНА транзакция, есно ничего не записано
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс