Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
shiro93
1 / 1 / 0
Регистрация: 09.11.2011
Сообщений: 199
#1

Программное создание документа в цикле по строкам ТЗ - 1С/1C 7.x

19.11.2013, 11:32. Просмотров 2529. Ответов 22
Метки нет (Все метки)

Помогите пожалуйста...делаю создание документов таким образом:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Процедура ОткрытьЗадание()
    Воп = Вопрос("Вы точно хотите создать задание?", "Да+Нет");
    Если Воп = "Да" Тогда
 ТЗРешили.ВыбратьСтроки();
        Пока ТЗРешили.ПолучитьСтроку() = 1 Цикл
           Задан = СоздатьОбъект("Документ.Задание");
           Задан.Новый();
           Задан.Номер = "Пл-"+СокрЛП(НомерДок);
           Задан.Подразделение = СокрЛП(Подразделение);
           Задан.Записать();
        КонецЦикла;
    Иначе
        Возврат;
    КонецЕсли;
КонецПроцедуры // ОткрытьЗадание
подскажите как сделать так чтобы если в ТЗРЕШИЛИ есть одинаковые Значения по определенной колонке, то не создавалось новый документ, а до записывалась в один из них...т.е. есть колонка ТекстРаздела иИсполнитель, нужно чтобы если встречаются строки с одним Исполнителем, то это все в одном документе, а так все разные документы!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2013, 11:32
Я подобрал для вас темы с готовыми решениями и ответами на вопрос 1C 7.x Программное создание документа в цикле по строкам ТЗ (1С):

Программное создание документа
Доброго времени суток! Господа, подскажите, как при программном создании...

Программное создание и проведение документа "ПоступлениеТоваров&q
Требуется программно создать и проводить документ "ПоступлениеТоваров", Бух...

Программное создание номенклатуры
доброго времени суток. нужно программно создать Элемент...

Программное создание диаграмм в 8.0
Расскажите (или дайте ссылку) как построить график в 1С 8.0 программно! ;)

Программное создание и удаление ревизита формы в 1с 8.3 УФ
Всем добрый день. Никак не могу понять как удалить ранее программно...

Программное создание элементов справочника Характеристики Номенклатуры
Народ, столкнулся с такой проблемой: Работаю с УПП. Выпускаемая продукция...

22
Xomych
576 / 519 / 66
Регистрация: 01.11.2012
Сообщений: 1,841
19.11.2013, 12:44 #2
Отсортируй ТЗ по Исполнителю и сравнивай предыдущее значение со следующим
0
shiro93
1 / 1 / 0
Регистрация: 09.11.2011
Сообщений: 199
19.11.2013, 12:54  [ТС] #3
Цитата Сообщение от Xomych Посмотреть сообщение
Отсортируй ТЗ по Исполнителю и сравнивай предыдущее значение со следующим
это понятно, а далее как делать запись в существующий уже документ?
0
Xomych
576 / 519 / 66
Регистрация: 01.11.2012
Сообщений: 1,841
19.11.2013, 13:02 #4
Д.Реквизит=ТЗ.Реквизит
Если в табличную часть
То Д.НоваяСтрока();
Д.Реквизит=ТЗ.Реквизит и т.д
0
shiro93
1 / 1 / 0
Регистрация: 09.11.2011
Сообщений: 199
26.11.2013, 10:11  [ТС] #5
Цитата Сообщение от Xomych Посмотреть сообщение
Д.Реквизит=ТЗ.Реквизит
Если в табличную часть
То Д.НоваяСтрока();
Д.Реквизит=ТЗ.Реквизит и т.д
Запись в реквизит я понимаю как происходит, вот как сделать чтоб не новый документ открывался, а уже который записался, на пример в предыдущем проходе цикла? т.е. когда совпадают исполнитель то для них один док создается, а если не совпадают то к каждой строке ТЗ свое задание
0
прг
5 / 5 / 1
Регистрация: 11.11.2013
Сообщений: 26
26.11.2013, 13:11 #6
ТЗРешили=СоздатьОбъект("Документ.Задание");
ТзРешили.ВыбратьДокументы(начдата,кондата);
Пока ТЗРешили.ПолучитьДокумент()>0 Цикл
Если ТзРешили.Реквизит=... Тогда
присвоить нужный реквизит
КонецЕсли;
КонецЦикла;
1
shiro93
1 / 1 / 0
Регистрация: 09.11.2011
Сообщений: 199
26.11.2013, 13:15  [ТС] #7
Цитата Сообщение от прг Посмотреть сообщение
ТЗРешили=СоздатьОбъект("Документ.Задание");
ТзРешили.ВыбратьДокументы(начдата,кондата);
Пока ТЗРешили.ПолучитьДокумент()>0 Цикл
Если ТзРешили.Реквизит=... Тогда
присвоить нужный реквизит
КонецЕсли;
КонецЦикла;
так мне нужно совпадающие реквизиты в Таблице значений , а не в доке
0
прг
5 / 5 / 1
Регистрация: 11.11.2013
Сообщений: 26
26.11.2013, 13:24 #8
Ну так впихнуть выбор документов в цикл по таблице.
1
shiro93
1 / 1 / 0
Регистрация: 09.11.2011
Сообщений: 199
26.11.2013, 13:39  [ТС] #9
Цитата Сообщение от прг Посмотреть сообщение
Ну так впихнуть выбор документов в цикл по таблице.
НЕ МОГУ ТОГДА ПОНЯТЬ КАК ОН СРАВНИВАТЬ БУДЕТ...изначально вообще нет документа задание...только после выполнения процедуры которую я в самом начале описал...поясните пожалуйста...добавив выборку ничего не изменилось...сделал так...
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Воп = Вопрос("Вы точно хотите создать задание?", "Да+Нет");
    Если Воп = "Да" Тогда
        Задан = СоздатьОбъект("Документ.Задание");
        ТЗРешили.ВыбратьСтроки();
        Пока ТЗРешили.ПолучитьСтроку() = 1 Цикл
            Задан.Новый();
            Задан.Номер = "Пл-"+СокрЛП(НомерДок)+"-"+СокрЛП(ТЗРешили.ПорядковыйНомер);
            Задан.Подразделение = СокрЛП(ТЗРешили.Исполнитель.Подразделение);
            Задан.Записать();
            Задан.ВыбратьДокументы();
            Пока Задан.ПолучитьДокумент() = 1 Цикл
                Если СокрЛП(ТЗРешили.Исполнитель) = СокрЛП(Задан.Ответственный) Тогда
                    Задан.НоваяСтрока();
                    Задан.Ответственный = ТЗРешили.Исполнитель;
                    Задан.ТекстРаздела = ТЗРешили.ТекстРаздела;
                    Задан.Срок = ТЗРешили.Срок;
                    Задан.СрокСтрока = ТЗРешили.СрокСтрока;
                КонецЕсли;
            КонецЦикла;
        КонецЦикла;
    Иначе
        Возврат;
    КонецЕсли;
0
прг
5 / 5 / 1
Регистрация: 11.11.2013
Сообщений: 26
26.11.2013, 14:01 #10
ТЗРешили.ВыбратьСтроки
Пока ТЗРешили.ПолучитьСтроку=1 Цикл
ДокумНашли=0;
Задан.ВыбратьДокументы();
Пока Задан.ПолучитьДокумент()=1 Цикл
Если Задан.Ответств=ТЗРешили.Исполнитель Тогда
присвоили ващи ревизиты
ДокумНашли=1;
Прервать: // если дальше не надо по этой строке таблицы
конецЕсли;
КонецЦикла;
Если ДокумНашли=0 Тогда
созжаете новый документ
КонецЕсли
1
shiro93
1 / 1 / 0
Регистрация: 09.11.2011
Сообщений: 199
26.11.2013, 15:05  [ТС] #11
Цитата Сообщение от прг Посмотреть сообщение
ТЗРешили.ВыбратьСтроки
Пока ТЗРешили.ПолучитьСтроку=1 Цикл
ДокумНашли=0;
Задан.ВыбратьДокументы();
Пока Задан.ПолучитьДокумент()=1 Цикл
Если Задан.Ответств=ТЗРешили.Исполнитель Тогда
присвоили ващи ревизиты
ДокумНашли=1;
Прервать: // если дальше не надо по этой строке таблицы
конецЕсли;
КонецЦикла;
Если ДокумНашли=0 Тогда
созжаете новый документ
КонецЕсли
да но все равно сейчас создает документы новые постоянно
0
прг
5 / 5 / 1
Регистрация: 11.11.2013
Сообщений: 26
26.11.2013, 15:11 #12
Значит условие проверки уточните. Типа СокрЛП и т.п.
И вставьте проверочные сообщения Сообщить(...); чтобы понять где не срабатывает
0
shiro93
1 / 1 / 0
Регистрация: 09.11.2011
Сообщений: 199
26.11.2013, 15:43  [ТС] #13
Цитата Сообщение от прг Посмотреть сообщение
Значит условие проверки уточните. Типа СокрЛП и т.п.
И вставьте проверочные сообщения Сообщить(...); чтобы понять где не срабатывает
пробелы я сразу убирал...срабатывает только почему то условие, на создание нового документа

Добавлено через 11 минут
Цитата Сообщение от прг Посмотреть сообщение
Значит условие проверки уточните. Типа СокрЛП и т.п.
И вставьте проверочные сообщения Сообщить(...); чтобы понять где не срабатывает
вроде как задан.ответственный не выводит...но почему?
или не подходит Выборка по документам, как по другом можно?

Добавлено через 17 минут
Цитата Сообщение от shiro93 Посмотреть сообщение
пробелы я сразу убирал...срабатывает только почему то условие, на создание нового документа

Добавлено через 11 минут


вроде как задан.ответственный не выводит...но почему?
или не подходит Выборка по документам, как по другом можно?
и еще так не првильно для меня делать он ищет по всем докам и всем докам дописует строки из ТЗ, а мне нужно чтобы при создании запись была в один документ, если Исполнители одинаковы, а другие доки в журнале не нужно трогать, что можно сделать?
0
прг
5 / 5 / 1
Регистрация: 11.11.2013
Сообщений: 26
26.11.2013, 15:51 #14
Выборка точно подходит, надо разбираться с данными

Вставьте: Сообщить("Исполн="+ТЗРешили.Исполнитель);
сразу после: Пока ТЗРешили.ПолучитьСтроку()=1 Цикл

и после: Пока Задан.ПолучитьДокумент()...
вставьте Сообщить("Ответст="+Задан.Ответственный);

Если данных много, то и вывод будет большой, но хоть видно будет есть ли там нужные
если есть то, что нужно "сообщить..." перенести на строку ниже

Добавлено через 2 минуты
Цитата Сообщение от shiro93 Посмотреть сообщение
и еще так не првильно для меня делать он ищет по всем докам и всем докам дописует строки из ТЗ,
Значит точно условия неправильные. при правильных будет писать только куда надо
0
shiro93
1 / 1 / 0
Регистрация: 09.11.2011
Сообщений: 199
26.11.2013, 15:57  [ТС] #15
Цитата Сообщение от прг Посмотреть сообщение
Выборка точно подходит, надо разбираться с данными

Вставьте: Сообщить("Исполн="+ТЗРешили.Исполнитель);
сразу после: Пока ТЗРешили.ПолучитьСтроку()=1 Цикл

и после: Пока Задан.ПолучитьДокумент()...
вставьте Сообщить("Ответст="+Задан.Ответственный);

Если данных много, то и вывод будет большой, но хоть видно будет есть ли там нужные
если есть то, что нужно "сообщить..." перенести на строку ниже

Добавлено через 2 минуты

Значит точно условия неправильные. при правильных будет писать только куда надо
я имею ввиду, что во все доки где есть совпадение с ТЗРешили.Исполнитель дописывает строки...а мне нужнго при создании, а те которые уже были доки вообще не трогать
0
прг
5 / 5 / 1
Регистрация: 11.11.2013
Сообщений: 26
26.11.2013, 16:04 #16
Цитата Сообщение от shiro93 Посмотреть сообщение
как сделать так чтобы если в ТЗРЕШИЛИ есть одинаковые Значения по определенной колонке, то не создавалось новый документ, а до записывалась в один из них...
Цитата Сообщение от shiro93 Посмотреть сообщение
а мне нужнго при создании, а те которые уже были доки вообще не трогать
Что-то условия какие-то противоречивые - сначала одно писали, а потом наоборот? Выражайтесь яснее.
0
shiro93
1 / 1 / 0
Регистрация: 09.11.2011
Сообщений: 199
26.11.2013, 16:06  [ТС] #17
Цитата Сообщение от прг Посмотреть сообщение
Что-то условия какие-то противоречивые - сначала одно писали, а потом наоборот? Выражайтесь яснее.
я в самом начале написал проблему, что ПРИ создании дока мне нужно чтобы дописывались строки по условию, если есть одинаковые в ТЗРешили...что можно сделать?
0
shiro93
1 / 1 / 0
Регистрация: 09.11.2011
Сообщений: 199
28.11.2013, 16:17  [ТС] #18
Цитата Сообщение от shiro93 Посмотреть сообщение
я в самом начале написал проблему, что ПРИ создании дока мне нужно чтобы дописывались строки по условию, если есть одинаковые в ТЗРешили...что можно сделать?
кто нибудь может что-то подсказать?
0
Xomych
28.11.2013, 16:22
  #19

Не по теме:

Подсказываю. Завязывай с программированием, не твоё это.

0
shiro93
1 / 1 / 0
Регистрация: 09.11.2011
Сообщений: 199
28.11.2013, 16:28  [ТС] #20
Цитата Сообщение от Xomych Посмотреть сообщение

Не по теме:

Подсказываю. Завязывай с программированием, не твоё это.

Не по теме:

ну спасибо. быстро вы людей определяете, я смотрю

0
28.11.2013, 16:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2013, 16:28
Привет! Вот еще темы с решениями:

Программное создание документа
В общем необходимо было в ТЧ обработки выгрузить данные по номенклатуре из...

Программное создание документа Приходная накладная
так навскидку может кто скажет... создал программно документ Приходная...

программное создание документа по форме
Уважаемые программисты. Нужно собрать информацию по каждой БД, находящейся в...

Программное создание документа Требование-накладная
доброго утра ! создаю программно требование-накладную на основании документа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru