Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
29 Мар 2017, 16:19
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Объединение документов по условию  (Прочитано 598 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн gamograff

  • *
  • Сообщений: 27
  • РЕПУТАЦИЯ: -1
  • Регистрация: 2015-07-16
  • Сайт: 
  • Профессия: Программист 1С
Добрый день. Есть следующая задача: есть выборка документов "ПоступлениеТоваровУслуг". Нужно их объединить следующим образом: есть предельная сумма, объединение документов должно идти по порядку выборки. Как только сумма следующего документа выводит общую сумму за пределы предельной суммы, документ записывается с датой первого, который вошёл в эту сумму. То есть в итоге сумма итогового документа должна быть равна или чуть меньше предельной суммы. После его записи мы переходим к следующему документу и так же объединяем дальше, пока не закончится выборка. Например:
12.05.2015 20р
13.05.2015 40р
14.05.2015 10р
Предельная сумма 65р
Итоговый документ будет от 12.05.2015 с суммой 60р, а документ от 14.05.2015 пойдёт в следующее объединение. И так далее.
И вот теперь вопрос. Как реализовать это всё реализовать? Как запомнить дату первого вошедшего в объединение документа (если создавать новый документ) или менять этот самый первый документ, это не принципиально, и как начать выбирать новые документы после записи объединения? Заранее спасибо!


Оффлайн Luzer1C

  • ****
  • Сообщений: 411
  • РЕПУТАЦИЯ: 40
  • КПД: 10%
  • Регистрация: 2014-02-17
  • Сайт: 
  • Профессия: Программист 1С
Ну вроде ничего сложного нет. Нужно только взять и сделать.
Помочь мне очень сложно. Но можно.
Помогаю просто так...
Матёрый разработчик УПП + Бит Финанс

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1096
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
А если на документ от 13го числа есть ссылки, то как быть?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн Vladimir_Sh

  • 1С:Специалист
  • ****
  • Сообщений: 348
  • РЕПУТАЦИЯ: 65
  • КПД: 19%
  • Регистрация: 2015-10-16
  • Сайт: 
  • Профессия: Разработчик 1С
Как запомнить дату первого вошедшего в объединение документа (если создавать новый документ) или менять этот самый первый документ, это не принципиально, 
Первый документ Вы получите как первый элемент коллекции (которую будете использовать), созданные уже документы вошедшие в предел рекомендую помечать неким признаком(так будет проще с ними в дальнейшем работать).
и как начать выбирать новые документы после записи объединения?
Используйте пометку о которой я писал выше и выбирайте новые документы. Потом на следующий круг. Можно добиться универсальности процедуры.
Если я Вам помог, нажми - Спасибо!

Оффлайн gamograff

  • *
  • Сообщений: 27
  • РЕПУТАЦИЯ: -1
  • Регистрация: 2015-07-16
  • Сайт: 
  • Профессия: Программист 1С
Используйте пометку о которой я писал выше и выбирайте новые документы. Потом на следующий круг. Можно добиться универсальности процедуры.

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

Приходы = Запрос.Выполнить().Выгрузить();

Если Приходы.Количество() > 0 Тогда

оснДок = Приходы.Получить(0).Получить(0);
оснДокОбъект = оснДок.ПолучитьОбъект();

ФП = 0;
ФП2 = 0;

Для каждого Строка из Приходы Цикл

Если ФП = 1 Тогда

Сумма = оснДокОбъект.Товары.Получить(0).Сумма;
текОбъект = Строка.Ссылка.ПолучитьОбъект();
СуммаТекОб = текОбъект.Товары.Получить(0).Сумма;
оснДокОбъект.Товары.Получить(0).Сумма = Сумма + СуммаТекОб;
оснДокОбъект.Записать();
текОбъект.УстановитьПометкуУдаления(Истина);

Элемент = Справочники.rm_Цепочки.НайтиПоРеквизиту("Приход", оснДок).ПолучитьОбъект();
Расход = Элемент.Расход.ПолучитьОбъект();
Расход.Товары.Получить(0).Сумма = Сумма + СуммаТекОб;
Расход.Записать();
Сообщить("Изменены документы  " + оснДок + " и " + Расход);

Элемент.Сумма = Сумма + СуммаТекОб;
Элемент.Количество = (Сумма + СуммаТекОб) / Константы.rm_ЦенаТовара.Получить();
Элемент.Записать();
Сообщить("Цепочка изменена");

                                        текЭлемент = Справочники.rm_Цепочки.НайтиПоРеквизиту("Приход", Строка.Ссылка).ПолучитьОбъект();
текЭлемент.Удалить();
ФП2 = 1;
Если Элемент.Сумма >= Объект.ПредельнаяСумма Тогда
Прервать;
КонецЕсли;
Иначе
                                        Если Строка.Ссылка = оснДок Тогда
    ФП = 1 ;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;


Теги:
 

Как создать нескольких документов "расчет при увольнении" на основании кадрового документа "увольнение" как Отпуска

Автор cozuРаздел Пользователям "1С - Предприятие 8"

Ответов: 3
Просмотров: 2458
Последний ответ 21 Мар 2015, 20:24
от дфтын
Не работает структура подчиненности документов "Требование-накладная" и "Передач

Автор sv_stas_svРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 0
Просмотров: 3696
Последний ответ 10 Мар 2011, 07:36
от sv_stas_sv
Реквизит "Ссылка" у справочников и документов

Автор leklerkРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 2394
Последний ответ 29 Май 2013, 16:24
от leklerk
"Дубляж" документов реализации в ВзаиморасчетыКомпанииОстаткиИОбороты

Автор mspuzРаздел Пользователям "1С - Предприятие 8"

Ответов: 0
Просмотров: 1483
Последний ответ 24 Янв 2014, 13:55
от mspuz
Неясна схема создания документов в "1С: ERP УП 2.1".

Автор РексарычРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 1208
Последний ответ 29 Июн 2016, 12:04
от Sandi

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
160 Сообщений
alex0402
127 Сообщений
MuI_I_Ika MuI_I_Ika
57 Сообщений
Norfolk
52 Сообщений
LexaK
49 Сообщений
друган
20 Сообщений
alexandr_ll
20 Сообщений
AsadRoman
18 Сообщений
Константин5825
18 Сообщений
MrLvovsky MrLvovsky
16 Сообщений

* Кто онлайн

  • Точка Гостей: 1002
  • Точка Скрытых: 0
  • Точка Пользователей: 13
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 

Dellos Catering - выездной ресторан кейтеринг по всему Миру
SimplePortal 2.3.5 © 2008-2012, SimplePortal