необходимо выдернуть из регистра розничные цены на печать, текущей датой, номенклатура из таблицы поступлениев розницу , делаю запрос, но не попадают первая и последняя позиции номенклатуры и мешаются некоторые еще.
Вот кусок текста с запросом
СЗНоменклатуры = СоздатьОбъект("СписокЗначений");
ВыгрузитьТабличнуюЧасть(СЗНоменклатуры, "Номенклатура");
Запрос = СоздатьОбъект("Запрос");
ДатаЗапроса = РабочаяДата();
ТекстЗапроса = "
|Период с ДатаЗапроса;
|Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура;
|ЦенаПрод = Регистр.ОстаткиТМЦ.ЦенаПрод;
|Количество = Регистр.ОстаткиТМЦ.Количество;
|Условие (Номенклатура в СЗНоменклатуры);
|Функция ОстКоличество = КонОст(Количество);
|Группировка Номенклатура;
|Группировка ЦенаПрод;
|";
ТаблицаДокумента = СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(ТаблицаДокумента, "Номенклатура, РозничнаяЦена, Коэффициент");
Запрос.Выполнить(ТекстЗапроса);
ПечДок="Накладная №"+глНомерНаПечать(ТекущийДокумент())+" от "+ДатаДок;
Пока Запрос.Группировка("Номенклатура") = 1 Цикл
Пока Запрос.Группировка("ЦенаПрод") = 1 Цикл
НомСтроки = 0;
ТаблицаДокумента.НайтиЗначение(Запрос.Номенклатура, НомСтроки, "Номенклатура");
Сообщить(НомСтроки);
Если НомСтроки <> 0 Тогда
ТаблицаДокумента.ПолучитьСтрокуПоНомеру(НомСтроки);
ПечЦена = Запрос.ЦенаПрод;
КонецЕсли;
ПечСтрана="Страна: "+ТаблицаДокумента.Номенклатура.СтранаПроисхождения;
ПечНаименование=ТаблицаДокумента.Номенклатура.Наименование;
ПечАртикул="Артикул "+ТаблицаДокумента.Номенклатура.Артикул;
Если НомВСтроке>3 Тогда
Если Строк>7 Тогда
строк=0;
Таб.НоваяСтраница();
КонецЕсли;
НомВСтроке=1;
КонецЕсли;
Если НомВСтроке=1 Тогда
Таб.ВывестиСекцию("СтрокаЭтикетки|СтолбецЭтикетки");
Строк=Строк+1;
НомВСтроке=НомВСтроке+1;
Иначе //Если НомВСтроке>1 Тогда
Таб.ПрисоединитьСекцию("СтрокаЭтикетки|СтолбецЭтикетки");
НомВСтроке=НомВСтроке+1;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Вот кусок текста с запросом
СЗНоменклатуры = СоздатьОбъект("СписокЗначений");
ВыгрузитьТабличнуюЧасть(СЗНоменклатуры, "Номенклатура");
Запрос = СоздатьОбъект("Запрос");
ДатаЗапроса = РабочаяДата();
ТекстЗапроса = "
|Период с ДатаЗапроса;
|Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура;
|ЦенаПрод = Регистр.ОстаткиТМЦ.ЦенаПрод;
|Количество = Регистр.ОстаткиТМЦ.Количество;
|Условие (Номенклатура в СЗНоменклатуры);
|Функция ОстКоличество = КонОст(Количество);
|Группировка Номенклатура;
|Группировка ЦенаПрод;
|";
ТаблицаДокумента = СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(ТаблицаДокумента, "Номенклатура, РозничнаяЦена, Коэффициент");
Запрос.Выполнить(ТекстЗапроса);
ПечДок="Накладная №"+глНомерНаПечать(ТекущийДокумент())+" от "+ДатаДок;
Пока Запрос.Группировка("Номенклатура") = 1 Цикл
Пока Запрос.Группировка("ЦенаПрод") = 1 Цикл
НомСтроки = 0;
ТаблицаДокумента.НайтиЗначение(Запрос.Номенклатура, НомСтроки, "Номенклатура");
Сообщить(НомСтроки);
Если НомСтроки <> 0 Тогда
ТаблицаДокумента.ПолучитьСтрокуПоНомеру(НомСтроки);
ПечЦена = Запрос.ЦенаПрод;
КонецЕсли;
ПечСтрана="Страна: "+ТаблицаДокумента.Номенклатура.СтранаПроисхождения;
ПечНаименование=ТаблицаДокумента.Номенклатура.Наименование;
ПечАртикул="Артикул "+ТаблицаДокумента.Номенклатура.Артикул;
Если НомВСтроке>3 Тогда
Если Строк>7 Тогда
строк=0;
Таб.НоваяСтраница();
КонецЕсли;
НомВСтроке=1;
КонецЕсли;
Если НомВСтроке=1 Тогда
Таб.ВывестиСекцию("СтрокаЭтикетки|СтолбецЭтикетки");
Строк=Строк+1;
НомВСтроке=НомВСтроке+1;
Иначе //Если НомВСтроке>1 Тогда
Таб.ПрисоединитьСекцию("СтрокаЭтикетки|СтолбецЭтикетки");
НомВСтроке=НомВСтроке+1;
КонецЕсли;
КонецЦикла;
КонецЦикла;
По теме из базы знаний
- Конструктор запросов по регистрам
- Ускорение работы со списком документов, в котором при выводе строки выполняется запрос по регистрам или ещё что-нибудь трудоемкое
- Доработка проведения в ERP 2.5. (Регистры накопления, Регистры сведений)
- Как спроектировать структуру регистра сведений
- Пример доработки проведения в ERP 2.5 по одному регистру накопления
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Чисто по методике:
Если НомСтроки <> 0 Тогда
ТаблицаДокумента.ПолучитьСтрокуПоНомеру(НомСтроки);
ПечЦена = Запрос.ЦенаПрод;
КонецЕсли;
//сюда можем попасть если НомСтроки=0, но, тем не менее, идет обращение к строкам ТЗ
.
Если НомСтроки <> 0 Тогда
ТаблицаДокумента.ПолучитьСтрокуПоНомеру(НомСтроки);
ПечЦена = Запрос.ЦенаПрод;
КонецЕсли;
//сюда можем попасть если НомСтроки=0, но, тем не менее, идет обращение к строкам ТЗ
.
Вообще воопрос в том, почему в запросе, вместо количества = 141 строке в документе, попадает 143 строки, хотя я делаю (|Условие (Номенклатура в СЗНоменклатуры);), это из-за того что на остатках может и не быть данной номенклатуры, а может и быть больше, можно ли как-то сгруппировать по номенклатуре чтобы не после выполнения запроса, в нем не было в разных строках одинаковой номенклатуры(Вроде группировка и должна с этим справляться??)? Возможно так. Но почему-то в стабильно не берет 1-ю и последнюю номенклатуру, я выгружал запрос в таблицу значений и смотрел кол-во строк, тоже 143.
(10) вопрос бессмысленен.
.
ситуация скорее всего в том, как написал (8) у тебя на остатках в рознице числится товар по разным ценам - вот и получается что одна номенклатура разворачивается в нескольо строк с разными ценами...
.
группировать по последней нельзя! сам-то понял что спросил - это типа как для одного человека построится по росту"... И цена не может быть последней - они существуют одновременно...
.
ситуация скорее всего в том, как написал (8) у тебя на остатках в рознице числится товар по разным ценам - вот и получается что одна номенклатура разворачивается в нескольо строк с разными ценами...
.
группировать по последней нельзя! сам-то понял что спросил - это типа как для одного человека построится по росту"... И цена не может быть последней - они существуют одновременно...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот