Приветствую уважаемые. Наведите на путь истинный, каким образом добавить строчку "сальдо на начало периода" и убрать "Сумма" под каждым месяцем как на скриншоте. Интересует: возможно ли такое реализовать с помощью настроек СКД или плюнуть и создать свой собственный макет на закладке "Макеты" ?
Результат = Запрос.Выполнить(); ВыборкаИзЗапроса = Результат.Выбрать();
Пока ВыборкаИзЗапроса.Следующий() Цикл Если ВыборкаИзЗапроса.Количество > ВыборкаИзЗапроса.КоличествоОстаток Тогда Сообщить("Товара "+ВыборкаИзЗапроса.ТМЦ +" не хватает на складе"); Отказ = Истина; КонецЕсли; КонецЦикла;
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) Если НЕ(РежимЗаписи = РежимЗаписиДокумента.Проведение) Тогда Возврат; КонецЕсли;
Запрос = Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | РасходнаяНакладнаяТЧРасхНакл.ТМЦ |ПОМЕСТИТЬ ТоварыДок |ИЗ | Документ.РасходнаяНакладная.ТЧРасхНакл КАК РасходнаяНакладнаяТЧРасхНакл |ГДЕ | РасходнаяНакладнаяТЧРасхНакл.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | РасходнаяНакладнаяТЧРасхНакл.ТМЦ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТоварыДок.ТМЦ, | ЕСТЬNULL(ТМЦОстатки.СуммаОстаток, 0) КАК СуммаОстаток, | ЕСТЬNULL(ТМЦОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток |ИЗ | ТоварыДок КАК ТоварыДок | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТМЦ.Остатки( | &Дата, | ТМЦ В | (ВЫБРАТЬ | ТоварыДок.ТМЦ | ИЗ | ТоварыДок КАК ТоварыДок) | И Склад = &Склад) КАК ТМЦОстатки | ПО ТоварыДок.ТМЦ = ТМЦОстатки.ТМЦ";
Результат = Запрос.Выполнить(); ВыборкаИзЗапроса = Результат.Выбрать();
Отбор = Новый Структура;
Пока ВыборкаИзЗапроса.Следующий() Цикл
Отбор.Вставить("ТМЦ", ВыборкаИзЗапроса.ТМЦ); МассивВозможныхДублей = ТЧРасхНакл.НайтиСтроки(Отбор); Для Каждого Товар Из МассивВозможныхДублей Цикл
Если ВыборкаИзЗапроса.КоличествоОстаток = 0 Тогда УчЦена = 0; Иначе УчЦена = ВыборкаИзЗапроса.СуммаОстаток/ВыборкаИзЗапроса.КоличествоОстаток; КонецЕсли;
Результат = Запрос.Выполнить(); ВыборкаИзЗапроса = Результат.Выбрать();
Отбор = Новый Структура;
Пока ВыборкаИзЗапроса.Следующий() Цикл
Отбор.Вставить("ТМЦ", ВыборкаИзЗапроса.ТМЦ); МассивВозможныхДублей = ТЧРасхНакл.НайтиСтроки(Отбор); Для Каждого Товар Из МассивВозможныхДублей Цикл
Если ВыборкаИзЗапроса.КоличествоОстаток = 0 Тогда УчЦена = 0; Иначе УчЦена = ВыборкаИзЗапроса.СуммаОстаток/ВыборкаИзЗапроса.КоличествоОстаток; КонецЕсли;
ЛевоеСоединение в данном случае значит: Выбрать все записи с табличной части и к ним присоединить количествоОстаток из регистра ТМЦ, по условию, что ТоварТЧ = Товар в регистре (Строка в Запросе
| ПО ТоварыДок.ТМЦ = ТМЦОстатки.ТМЦ";
)
Цитата
Остатки из временной таблицы переносятся в остатки регистра накопления ТМЦОстатки или что((?
Не переносятся, а присоединяются. Как описано выше.
Если я правильно вас понял. УчЦена в документе расходной это та цена по которой этот товар закупили. А УчСумма соответсвенно стоимость по которой закупили. То получиться чтото вроде этого
Процедура ОбработкаПроведения(Отказ, РежимПроведения) Запрос = Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | РасходнаяНакладнаяТЧРасхНакл.ТМЦ, | СУММА(РасходнаяНакладнаяТЧРасхНакл.Количество) КАК Количество |ПОМЕСТИТЬ ТоварыДок |ИЗ | Документ.РасходнаяНакладная.ТЧРасхНакл КАК РасходнаяНакладнаяТЧРасхНакл |ГДЕ | РасходнаяНакладнаяТЧРасхНакл.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | РасходнаяНакладнаяТЧРасхНакл.ТМЦ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТоварыДок.ТМЦ, | ЕСТЬNULL(ТМЦОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, | ТоварыДок.Количество, | ЕСТЬNULL(ТМЦОстатки.СуммаОстаток, 0) КАК СуммаОстаток |ИЗ | ТоварыДок КАК ТоварыДок | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТМЦ.Остатки( | &Дата, | ТМЦ В | (ВЫБРАТЬ | ТоварыДок.ТМЦ | ИЗ | ТоварыДок КАК ТоварыДок)) КАК ТМЦОстатки | ПО ТоварыДок.ТМЦ = ТМЦОстатки.ТМЦ";
Результат = Запрос.Выполнить(); ВыборкаИзЗапроса = Результат.Выбрать();
Пока ВыборкаИзЗапроса.Следующий() Цикл Если ВыборкаИзЗапроса.Количество > ВыборкаИзЗапроса.КоличествоОстаток Тогда Сообщить("Товара "+ВыборкаИзЗапроса.ТМЦ +" не хватает на складе"); Отказ = Истина; КонецЕсли;
Результат = Запрос.Выполнить(); ВыборкаИзЗапроса = Результат.Выбрать();
Пока ВыборкаИзЗапроса.Следующий() Цикл Если ВыборкаИзЗапроса.Количество > ВыборкаИзЗапроса.КоличествоОстаток Тогда Сообщить("Товара "+ВыборкаИзЗапроса.ТМЦ +" не хватает на складе"); Отказ = Истина; КонецЕсли; КонецЦикла;
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) Если НЕ(РежимЗаписи = РежимЗаписиДокумента.Проведение) Тогда Возврат; КонецЕсли;
Запрос = Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | РасходнаяНакладнаяТЧРасхНакл.ТМЦ |ПОМЕСТИТЬ ТоварыДок |ИЗ | Документ.РасходнаяНакладная.ТЧРасхНакл КАК РасходнаяНакладнаяТЧРасхНакл | |СГРУППИРОВАТЬ ПО | РасходнаяНакладнаяТЧРасхНакл.ТМЦ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТоварыДок.ТМЦ, | ЕСТЬNULL(ТМЦОстатки.СуммаОстаток, 0) КАК СуммаОстаток, | ЕСТЬNULL(ТМЦОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток |ИЗ | ТоварыДок КАК ТоварыДок | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТМЦ.Остатки( | &Дата, | ТМЦ В | (ВЫБРАТЬ | ТоварыДок.ТМЦ | ИЗ | ТоварыДок КАК ТоварыДок) | И Склад = &Склад) КАК ТМЦОстатки | ПО ТоварыДок.ТМЦ = ТМЦОстатки.ТМЦ";
Проверка на остаток лучше делать в процедуре "ОбработкаПроведения".
Вообще, запрос в цикле для проверки остатка (и вобще) это мягко говоря не красиво.
я бы проверил остатки тех товаров которые в документе так:
Процедура ОбработкаПроведения(Отказ, РежимПроведения) Запрос = Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | РасходнаяНакладнаяТЧРасхНакл.ТМЦ, | СУММА(РасходнаяНакладнаяТЧРасхНакл.Количество) КАК Количество |ПОМЕСТИТЬ ТоварыДок |ИЗ | Документ.РасходнаяНакладная.ТЧРасхНакл КАК РасходнаяНакладнаяТЧРасхНакл |ГДЕ | РасходнаяНакладнаяТЧРасхНакл.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | РасходнаяНакладнаяТЧРасхНакл.ТМЦ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТоварыДок.ТМЦ, | ЕСТЬNULL(ТМЦОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, | ТоварыДок.Количество |ИЗ | ТоварыДок КАК ТоварыДок | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТМЦ.Остатки( | &Дата, | ТМЦ В | (ВЫБРАТЬ | ТоварыДок.ТМЦ | ИЗ | ТоварыДок КАК ТоварыДок)) КАК ТМЦОстатки | ПО ТоварыДок.ТМЦ = ТМЦОстатки.ТМЦ"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Запрос.УстановитьПараметр("Дата", Дата);
Результат = Запрос.Выполнить(); ВыборкаИзЗапроса = Результат.Выбрать();
Пока ВыборкаИзЗапроса.Следующий() Цикл Если ВыборкаИзЗапроса.Количество > ВыборкаИзЗапроса.КоличествоОстаток Тогда Сообщить("Товара "+ВыборкаИзЗапроса.ТМЦ +" не хватает на складе"); Отказ = Истина; КонецЕсли; КонецЦикла;
КонецПроцедуры
Рассчитать УчЦену и УчСумму. тут не понятно, куда ее алгоритм должен заполнять. Если в документ расходной то не понятен практический смысл от этого. Может все таки нужно списать товары с регистра ТМЦ?
Привет всем. Есть конфа Управление небольшой фирмой для Украины 1.4.2.2 Полностью типовая. Файловый вариант. В целом база летает, документы открываются быстро, но при открытии именно Журнала документов "Документы по кассе" 1с начинает думать минуты 3 (а если отдельно открыть список РКО или ПКО то открывается быстро), проведение документа из этого же журнала занимает примерно столько же времени. И это даже происходит на машине на которой база лежит с 1м пользователем. (не в сети дело). В этом журнале всего 3500 документов РКО и ПКО за 1.5 года. Тестирование и исправление со всеми галочками делал, результата 0. Запускал базу на очень мощной машине, результат примерно на 10% лучше. Но это все равно не то, антивирус тоже отключал. Файл 1Cv8.1CD занимает 450 мб. Неужели, пора на SQL переходить? И кстати, база лежала на флешке и пользователи через сеть работали с ней. Может чего нибудь повредилось в базе. Посоветуете, может существуют какие-нибудь решения? А если обновить до более нового релиза, теоретически трабла может решится ?
СписокОтбора = ОтобратьЗначения(Текст); //Здесь возвращаем запросом найденные результаты в виде списка значений Если СписокОтбора.Количество()<2 Тогда ЭлементыФормы.Удалить(СписокВыбора); мПолеПодбора = Неопределено; Иначе СписокВыбора.Значение = СписокОтбора; СписокВыбора.Высота = 20*СписокОтбора.Количество(); КонецЕсли;
Если СписокОтбора.Количество()=1 Тогда ТекстАвтоПодбора = СписокОтбора[0].Значение; КонецЕсли;
Спасибо, буду как-то дальше выкручиваться. Подумал над вариантом создания 2х полей, одно сделать скрытым спецом под список выбора, а второе - для ввода.
Приветствую! Создал тут поиск по строке аля поиск как в гугле. Но есть проблема: Когда начинаешь вводить символы, выдает похожие результаты - все правильно. Но курсор ввода при этом слетает с поля ввода, приходится мышью его устанавливать, что есть не удобно. Есть какие-то идеи для решения? Или система на такое не способна?
Проблема решена. Оказалось, проблема была в договоре. В реквизите "договор" во всех документах по данному контрагенту договор только отображался, но на самом деле его не было если перейти по ссылке. Создали новый договор и все ОК. Спасибо кто заглядывал в тему и уделял внимание!
Не помогло, к сожалению. Еще заметил, что проводки в документе возврата формируються только Дт 631 Кт281, а Дт 644 Кт 631 не формирует (сторнирование налогового кредита)
Привет! При заполнении акта сверки (по кнопке заполнить) в табличную часть попадают документы движения. Все правильно. Но для документа "Повернення товарів постачальнику" почему-то ставиться сумма БЕЗ НДС., а для "Надходження товарів і послуг" С НДС. Видимо, чтото с документом возврата, хотя, как видно на картинке, в возврате сумма ндс есть. Изза такой разбежности естественно сверка не правильна. Пролейте свет пожалуйста, где зарыта собака
Приветствую . Нужно вывести список всех документов "Реализация товаров" за период и прикрепить к ним оплату - ПКО или Платежное поручение входящее и налоговую накладную, если есть (Если нету оплаты или налоговой то Реализацию товаров все равно оставлять с пустыми данными).
Собственно вывожу список расходных
ВЫБРАТЬ РеализацияТоваровУслуг.Ссылка КАК РеализацияТоваров, РеализацияТоваровУслуг.СуммаДокумента КАК СуммаРеализации, РеализацияТоваровУслуг.Сделка ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ГДЕ РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон
Потом присоединяю НН к НИМ по основанию
ВЫБРАТЬ РеализацияТоваровУслуг.Ссылка КАК РеализацияТоваров, РеализацияТоваровУслуг.СуммаДокумента КАК СуммаРеализации, РеализацияТоваровУслуг.Сделка, НалоговаяНакладная.Ссылка КАК Налоговая ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ЛЕВОЕ СОЕДИНЕНИЕ Документ.НалоговаяНакладная КАК НалоговаяНакладная ПО РеализацияТоваровУслуг.Ссылка = НалоговаяНакладная.ДокументОснование ГДЕ РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон И НалоговаяНакладная.Дата МЕЖДУ &ДатаНач И &ДатаКон
И тут проблема.. выводятся ТОЛЬКО те расходные у которых есть НН, (будто я применил внутреннее соединение). Расходные без налоговых просто отбрасываются. Не пойму, почему левое соединение не хочет работать?, Т.е оставить полностью расходные. Почему так? Пролейте свет пожалуйста.
Приветствую всех. Подскажите как в Бухгалтерии для Украины 8.2, входящий платеж (например на 10 тыс. грн) разбить по неоплаченным расходным накладным (на сумму 3к, 3к, и 4к). Сам я не очень в типовой бухгалтерии, хочу узнать возможно ли такое и как. Через банковскую выписку? Или через платежное поручение входящее? Спасибо за конструктивные ответы.
Конфигурация "Бухгалтерия для Украины", редакция 1.2. Разработка конфигурации: "ABBYY Ukraine", 2005-2011 (1.2.8.1)
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!