//=========================проверям на наличие уже созданного пл======================= ДокПЛ=СоздатьОбъект("Документ.ПутевойЛистГрузовой"); ДокПЛ.ВыбратьДокументы(Дата1,Дата2); Пока ДокПл.ПолучитьДокумент()=1 Цикл Если ДокПЛ.ПометкаУдаления() = 0 Тогда // (ДокПЛ.Проведен() = 0) И
//================находим документ и редактируем его!===================== Если (ДокПЛ.Автомобиль=ДокМ.Автомобиль) и (ДокПЛ.ДатаДок=ДокМ.ДатаДок) Тогда Если Вопрос("ПЛ № "+ДокПЛ+" уже записан (№ "+ДокПЛ.Номердок+"). РЕДАКТИРОВАТЬ?", "Да+Нет") = "Да" Тогда
ДокМ=ДокПЛ;
Если ДокМ.Проведен()=1 Тогда ДокМ.СделатьНеПроведенным();
КонецЕсли; //================находим документ и редактируем его!===================== КонецЕсли; КонецЦикла; Попытка ДокМ.Записать(); Сообщить("Создан новый ПЛ "+ ДокМ); Исключение КонецПопытки; //=========================================================== КонецЦикла;
сообщить("Ок."); КонецПроцедуры
создаю новый сообщает: Создан новый ПЛ ПутевойЛистГрузовой ЗЕ-0000001 (04.01.17) Создан новый ПЛ ПутевойЛистГрузовой ЗЕ-0000002 (05.01.17) Создан новый ПЛ ПутевойЛистГрузовой ЗЕ-0000003 (06.01.17) Ок. Здесь все хорошо.
теперь провераю на наличие дока и редактирую его сообщает: Редактирован! ПутевойЛистГрузовой ЗЕ-0000001 (04.01.17) Редактирован! ПутевойЛистГрузовой ЗЕ-0000002 (05.01.17) Редактирован! ПутевойЛистГрузовой ЗЕ-0000003 (06.01.17) Редактирован! ПутевойЛистГрузовой ЗЕ-0000002 (05.01.17) Редактирован! ПутевойЛистГрузовой ЗЕ-0000003 (06.01.17) Редактирован! ПутевойЛистГрузовой ЗЕ-0000003 (06.01.17) Ок. ************************************************************************ Редактирован! ПутевойЛистГрузовой ЗЕ-0000002 (05.01.17) Редактирован! ПутевойЛистГрузовой ЗЕ-0000003 (06.01.17) Редактирован! ПутевойЛистГрузовой ЗЕ-0000003 (06.01.17) Почему 2 строчка задваеветься, а 3 вовсе троит?
//=========================проверям на наличие уже созданного пл======================= ДокПЛ=СоздатьОбъект("Документ.ПутевойЛистГрузовой"); ДокПЛ.ВыбратьДокументы(Дата1,Дата2); Пока ДокПл.ПолучитьДокумент()=1 Цикл Если ДокПЛ.ПометкаУдаления() = 0 Тогда // проверяем все кроме помеченных!!
//================находим документ и редактируем его!===================== Если (ДокПЛ.Автомобиль=ДокМ.Автомобиль) и (ДокПЛ.ДатаДок=ДокМ.ДатаДок) Тогда Если Вопрос("ПЛ № "+ДокПЛ+" уже записан (№ "+ДокПЛ.Номердок+"). РЕДАКТИРОВАТЬ?", "Да+Нет") = "Да" Тогда
ДокМ=ДокПЛ;
Если ДокМ.Проведен()=1 Тогда ДокМ.СделатьНеПроведенным(); КонецЕсли; КонецЕсли; Докм.Автор=глПользователь; ДокМ.ПоказанияСпидометраНаНачало=ТЗ.КоличествоНачПокСпид; ДокМ.ПоказанияСпидометраНаКонец=ТЗ.КоличествоКонПокСпид; ДокМ.ПробегGPS=ТЗ.GPS; ДокМ.ПробегНорма=ТЗ.Км; ДокМ.СуммаЗаправки=ТЗ.ПоступилоСумма; ДокМ.ПоступилоГСМ=ТЗ.ПоступилоЛитр; ДокМ.Записать(); Сообщить("Редактирован! "+ДокМ.ТекущийДокумент()); КонецЕсли; //================находим документ и редактируем его!===================== КонецЕсли; КонецЦикла;
//=========================не трогать==================================================================== Если ДокРН.Итог("СуммаСНДС")<ДокРН.СуммаДокНал Тогда// **начало сообщить ("Не хватает товара!!"); иначе
//правим суммы Ном = ДокРН.КоличествоСтрок(); Если Ном > 0 Тогда //**1 Пока Ном > 0 Цикл ДокРН.ПолучитьСтрокуПоНомеру(Ном); Если ДокРН.Итог("СуммаСНДС")>ДокРН.СуммаДокНал Тогда //**2 Дельта2= ДокРН.Итог("СуммаСНДС")-ДокРН.СуммаДокНал; ДокРН.СуммаСНДС=ДокРН.Суммасндс-Дельта2;
Если ДокРН.СуммаСНДС=0 Тогда ДокРН.Удалитьстроку(); КонецЕсли;
//**выбрает вессой или штучный товар и правим кво с условием Если ДокРН.ТМЦ.Весовой = 0 тогда ДокРН.Кво=Окр(ДокРН.СуммаСНДС/ДокРН.ЦенаСНДС); иначе ДокРН.Кво=ДокРН.СуммаСНДС/ДокРН.ЦенаСНДС; КонецЕсли;//**выбрала
Может нужно создать еще третью ТЗ и выгрузить туда Долги по клиенту и Остатки по ТМЦ? Может кто-то такое уже делал подскажите пожалуйста наглядный код.
После того как я загрузила из ТЗОстатков в РН мне необходимо пробежаться по строках в документе снизу в вверх и убрать лишние суммы и расчитать ТекКво= если ТМЦ.БазЕдиница "шт". то ОКР, если "кг" оставляем как есть ("помогите расчитать нужное колво!!!!"); чтобы расзницу по кво вернуть обратно в ТЗОстатки. Acid @ Сегодня, 10:48
,
ТЗКлиенты.ВыбратьСтроки(); Пока ТЗКлиенты.ПолучитьСтроку()=1 Цикл//1 начало докРН = СоздатьОбъект("Документ.РасходнаяНакладная"); докРН.Новый(); докРН.Фирма = глВосстановитьЗначение(,"БазФирма"); докРН.Валюта = Константа.ОсновнаяВалюта; докРН.Курс = докРН.Валюта.Курс.Получить(докРН.ДатаДок); докРН.ВидНДС = докРН.Фирма.СтавкаНДС; докРН.ДатаДок = ТекущаяДата(); докРН.Контрагент = ТЗКлиенты.Контрагент; докРН.СуммаДокНал= ТЗКлиенты.Долг; докРН.ВидТорговли = докРН.Контрагент.ВидТорговли; докРН.СчетКонтрагента =СчетПоКоду("361"); докРН.МестоХранения = ВыбСклад; //=========================не трогать==================================================================== //----2----// //==========создаем список ТМЦ в расходных накладных по выбраным контрагентам==== ТЗОстатки.ВыбратьСтроки(); Пока ТЗОстатки.ПолучитьСтроку()=1 Цикл //2 начало докРН.НоваяСтрока(); докРН.ТМЦ = ТЗОстатки.ТМЦ; докРН.Ед = ТЗОстатки.Ед; докРН.Коэффициент = ТЗОстатки.Коэффициент; докРН.Кво = ТЗОстатки.СписатьКво; докРН.ЦенаСНДС = ТЗОстатки.ЦенаСНДС; докРН.СуммаСНДС = докРН.Кво* докРН.ЦенаСНДС; //=========================не трогать==================================================================== //----3----// Если докРН.СуммаДокНал>ТЗОстатки.Итог("СписатьКво") Тогда Сообщить (ТЗОстатки.Итог("СписатьКво")); Сообщить ("Нехватает товара!!!"); возврат; КонецЕсли; //=========================не трогать====================================================================
//----4----// // как расчитать сколько нужно списать колва в РН !!!!!!!!!!! Если докРН.СуммаДокНал<докРН.Итог("СуммаСНДС") Тогда
докРН.ВыбратьСтроки(); Пока докРН.ПолучитьСтроку()=1 Цикл //3
ИзлишекСуммы=докРН.СуммаДокНал-докРН.Итог("СуммаСНДС"); сообщить("излишек"+ ИзлишекСуммы); // не обходимо пробежаться по строках в документе и убрать лишее!!!!!! текКолСтрокРН = ТЗОстатки.КоличествоСтрок(); Для ы = 1 По текКолСтрокРН Цикл
КонецЦикла;//2 конец Сообщить(докРН.Контрагент); Сообщить("Итого"+докРН.Итог("СуммаСНДС"));
//=========================не трогать==================================================================== докРН.Записать(); Сообщить(докРН.ТекущийДокумент()+"Создан!"); Если флПроводить=1 Тогда докРН.Провести(); Сообщить(докРН.ТекущийДокумент()+"Проведен!"); КонецЕсли; //==================================================================================================== КонецЦикла; //1 конец КонецПроцедуры
//===================================================================== Процедура Удалить() Если ТЗОстатки.СписатьКво<=0 Тогда ТЗОстатки.УдалитьСтроку(ТЗОстатки.НомерСтроки); КонецЕсли; КонецПроцедуры
Добрый вечер. Очень давно хотела обработку по Формированию РН из ТЗОстатков. Как смогла так и настряпала. Прошу не ругать меня. 1.Сначала я выбрала в ТЗКлиенты данные по контрагентам по 361 счету с отрицательным долгом 2.Набрала ВыбДок (это излишки по остаткам ТМЦ между Бух.базой и Складом и загрузила их в Расходную накладную по продажной цене) 3.Выгрузила эти излишки в ТЗОстатки 4.СоздатьОбъект("Документ.РасходнаяНакладная") и загружаю в ТЗОстатки 5. Необходимо их обработать а)Если докРН.СуммаДокНал>докРН.Итог("СуммаСНДС") Тогда Сообщить ("Нехватает товара!!!"); прерываю!!!!!!! б) Если докРН.СуммаДокНал>докРН.Итог("СуммаСНДС") Тогда и начинается самое ТРУДНОЕ как расчитать ТекКво= если ТМЦ.БазЕдиница "шт". то ОКР, если "кг" оставляем как есть ("помогите расчитать нужное колво!!!!"); Я понимаю, что нужно пробежаться по строках в документе и убрать лишнее кво и вернуть его в ТЗОстатки для создания следующей РН !!!!!! Если не трудно подскажите
ТЗКлиенты.ВыбратьСтроки(); Пока ТЗКлиенты.ПолучитьСтроку()=1 Цикл//1 начало докРН = СоздатьОбъект("Документ.РасходнаяНакладная"); докРН.Новый(); докРН.Фирма = глВосстановитьЗначение(,"БазФирма"); докРН.Валюта = Константа.ОсновнаяВалюта; докРН.Курс = докРН.Валюта.Курс.Получить(докРН.ДатаДок); докРН.ВидНДС = докРН.Фирма.СтавкаНДС; докРН.ДатаДок = ТекущаяДата(); докРН.Контрагент = ТЗКлиенты.Контрагент; докРН.СуммаДокНал= ТЗКлиенты.Долг; докРН.ВидТорговли = докРН.Контрагент.ВидТорговли; докРН.СчетКонтрагента =СчетПоКоду("361"); докРН.МестоХранения = ВыбСклад; //=========================не трогать==================================================================== //----2----// //==========создаем список ТМЦ в расходных накладных по выбраным контрагентам==== ТЗОстатки.ВыбратьСтроки(); Пока ТЗОстатки.ПолучитьСтроку()=1 Цикл //2 начало докРН.НоваяСтрока(); докРН.ТМЦ = ТЗОстатки.ТМЦ; докРН.Ед = ТЗОстатки.Ед; докРН.Коэффициент = ТЗОстатки.Коэффициент; докРН.Кво = ТЗОстатки.СписатьКво; докРН.ЦенаСНДС = ТЗОстатки.ЦенаСНДС; докРН.СуммаСНДС = докРН.Кво* докРН.ЦенаСНДС; //=========================не трогать==================================================================== //----3----// Если докРН.СуммаДокНал>докРН.Итог("СуммаСНДС") Тогда Сообщить ("Нехватает товара!!!"); возврат; КонецЕсли; //=========================не трогать====================================================================
//----4----// // как расчитать сколько нужно списать колва в РН !!!!!!!!!!! Если докРН.СуммаДокНал>докРН.Итог("СуммаСНДС") Тогда
докРН.ВыбратьСтроки(); Пока докРН.ПолучитьСтроку()=1 Цикл //3
ИзлишекСуммы=докРН.СуммаДокНал-докРН.Итог("СуммаСНДС"); сообщить("излишек"+ ИзлишекСуммы); // не обходимо пробежаться по строках в документе и убрать лишее!!!!!! текКолСтрокРН = ТЗОстатки.КоличествоСтрок(); Для ы = 1 По текКолСтрокРН Цикл
ТекКво= если ТМЦ.БазЕдиница "шт". то ОКР, если "кг" оставляем как есть ("помогите расчитать нужное колво!!!!"); докРН.Кво = ТекКво; докРН.ЦенаСНДС = ТЗОстатки.ЦенаСНДС; докРН.СуммаСНДС = докРН.Кво* докРН.ЦенаСНДС;
КонецЦикла; КонецЦикла; КонецЕсли;
//----5----// // возращаяю в таблицу ТЗОстатки-лишее кол-во товара из РН
докРН.ВыбратьСтроки(); Пока докРН.ПолучитьСтроку()=1 Цикл //3
КонецЦикла;//2 конец Сообщить(докРН.Контрагент); Сообщить("Итого"+докРН.Итог("СуммаСНДС"));
//=========================не трогать==================================================================== докРН.Записать(); Сообщить(докРН.ТекущийДокумент()+"Создан!"); Если флПроводить=1 Тогда докРН.Провести(); Сообщить(докРН.ТекущийДокумент()+"Проведен!"); КонецЕсли; //==================================================================================================== КонецЦикла; //1 конец КонецПроцедуры
//===================================================================== Процедура Удалить() Если ТЗОстатки.СписатьКво<=0 Тогда ТЗОстатки.УдалитьСтроку(ТЗОстатки.НомерСтроки); КонецЕсли; КонецПроцедуры
//=========================не трогать==================================================================== Это я пишу для себя пометки, люблю сначала все поломать,а потом 3 часа вспоминать.
нет есть только ниже |Контрагент= Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Контрагент,Регистр.ПартииТоваров.ТекущийДокумент.ПриходнаяНакладная.Контрагент; Acid @ Сегодня, 16:05
,
Если глФильтрПоСправочнику("Номенклатура",0,0,КатТоваров,0,0,СписокТоваров,ТекстЗапроса,0,0,"Товар,,,СписокТоваров,,,,,")=0 Тогда Возврат; КонецЕсли;
Если глФильтрПоСправочнику("Контрагенты",0,0,КатКлиентов,0,0,СписокКлиентов,ТекстЗапроса,0,0,"Контрагент,,,СписокКлиентов,,,,,")=0 Тогда Возврат; КонецЕсли;
Запрос = СоздатьОбъект("Запрос"); Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли;
Запрос.ВНачалоВыборки(); Пока Запрос.Группировка(1) = 1 Цикл Таб.ВывестиСекцию("КатегорияТовара"); КонецЦикла;
// Заполнение полей "Итого" Таб.ВывестиСекцию("Итого"); // Вывод заполненной формы Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать по категории товара", "");
КонецПроцедуры
На печате Ставлю Запрос.КолТТ Добрый подскажите пожалуйста как просчитать колвоТТ по выбраной категории товаров и почему Счетчик считает колво документов, если ему указано просчитать Контрагентов? Во втором коде счетчик считает верно. Что я делаю не так?
ЗапросКлиенты= СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Считалочка) |Клиент = Справочник.Контрагенты.ТекущийЭлемент; |Группировка Клиент без групп упорядочить по Клиент.Наименование; |Условие(Клиент в ВыбКлиент); |Условие(Клиент в МФВыбКлиенты); |Функция Колвокл = Счётчик (Клиент); |"//}}ЗАПРОС ;
Да я согласна с вами опыта у меня нет. Коректировать регистр мне поможет знакомый специалист по 1с. (Правда к нему очень трудно достучатся). Все что я делаю я сначала тестирую на копии. Спасибо огромное вам за поучения. Sharzem @ Сегодня, 15:41
,
Serg_XX @ 14.11.16, 15:09
, Sharzem @ 14.11.16, 0:25
, Я посмотрела, что пишет в регистры партии товара, 1)записи дублирует фирма-пусто и фирма с данными 2)контрагент и поставщик сюда записывает только поставщика который поставлял проданный товар в этой накладной. он не записывает контрагента в этом документе. Вот почему у меня не получалось правильно сформировать данные Срабатывало только так: |Контрагент= Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Контрагент,Регистр.ПартииТоваров.ТекущийДокумент.ПриходнаяНакладная.Контрагент; 3)Если уж так придираться мне вообще не стоило брать из регистра партии данные для отчета, Возникла идея Дописать и откоректировать Регистр ОборотПродаж 1) в расходной, поставить условие , что вид документа=0 тогда данные из возврата поставщику сюда не подтянутся. 2) в приходной, поставить условие , что вид документа=1 тогда данные из возврата покупателя сюда не подтянутся. 3)Провести все документы за нужный период.
1.Регистр.ПартииТоваров.Фирма пусто ! Используйте Фирма = Регистр.ПартииТоваров.ТекущийДокумент.Фирма если изменить вытягивает не понятные данные 2.Добавила через КодОперации все отлично работает быстрее прежнего приблизительно на 00:00;17, но Контрагент нужно указать через нужные документы иначе суммы не верны.
Если я не укажу Оборот>0 или Оборот<0 тогда вытягиваются возвраты. Вы имеете в виду |Оборот = Регистр.ПартииТоваров.Оборот; исправить? Если вам не тяжело можете привести пример. igmig65 @ Сегодня, 7:03
,
Все. Исключила не нужные документы.(Сумма(Оборот) когда ((Оборот>0) и (ТекДокумент.Вид() = ""РасходнаяНакладная"")или(Оборот<0) и (ТекДокумент.Вид() = ""ПриходнаяНакладная"")) Единственное хотелось бы чтобы быстрее формировался. Можно ли что-то подправить?
Мне нужно выбрать сумму и колворасход из расходной накладной без возврата поставщику и из приходной без возврата покупателя, так как форма док едина. Я уже не знаю, что делать. Вариант указать Док.ВидОперации, но что-то по незнанию не получается. Подскажите пожалуйста.
Да, вы очень помогли. Спасибо. Функция ВесРасход = Сумма(Запрос.КолРасход * Вес + Количество - Количество). Контрагента выбираю через Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Контрагент, Регистр.ПартииТоваров.ТекущийДокумент.ПриходнаяНакладная.Контрагент и создала на каждую группировку -Печать1() Печать2() и тд. теперь формирует очень быстро. И поставила |Условие (ПустоеЗначение(Контрагент)=0); тогда убирает поставщиков из приходки.
Я понимаю, что это не правильно. Чтобы быстрее формировались данные можно не сколько видов печати? печать 1 -группирует только категория товара печать 2 -группирует категория+контрагент печать 3 -группирует категория+контрагент+товар печать 4 -группирует категория+контрагент+товар+текдок печать 5 -группирует категория+товар засекала время группирует категорию товара -по сформировать по всем группировкам с выборкой только категория товара-1 минута 5 сек, а при печать (1) - 19 секунд.
inna.innainna84 @ Сегодня, 20:35
,
Еще вариант |ТекДок = Регистр.ПартииТоваров.ТекущийДокумент; // это оставляю !!!!!!!! а |Контрагент= Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Контрагент, Регистр.ПартииТоваров.ТекущийДокумент.ПриходнаяНакладная.Контрагент; //указываю вид документа и добавляю |Условие (ПустоеЗначение(Контрагент)=0); // тогда удаляет поставщиков
Не выбрала потому, что данные с приходной(возврат от покупателя) не записываются в регистр оборот товара. Нужна фактич. сумма продажи. (расход-возврат).Если я не права, сообщите пожалуйста. Sharzem @ Сегодня, 18:28
,
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!