Имя: Пароль:
1C
1С v8
ДокументСписок
0 aguilar
 
25.03.13
13:21
Здравствуйте,у меня обычное приложение. Подскажите как можно в документе,в ФормеСписка, обойти каждый документ,проверяя есть ли среди них ,например в колонке ИнвентарныйНомер,какое-то значение.
1 Wobland
 
25.03.13
13:22
можно запросить и обработать результат запроса. иное - от лукавого
2 H A D G E H O G s
 
25.03.13
13:28
ИсточникДанных
3 aguilar
 
25.03.13
13:29
(1) А пример вы не додите,я навичок еще :\
4 H A D G E H O G s
 
25.03.13
13:29
Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ДокументСписокРеализацияТоваров);
Результат = Построитель.Результат;
Результат.Выгрузить();
5 H A D G E H O G s
 
25.03.13
13:30
(3) Эххх, Димка, Димка, ты еще и русский херово знаешь.
6 aguilar
 
25.03.13
13:30
(4) Тоесть в Результат,у меня будет мой спиосок,а потом с помощью массива обойти таб часть?
7 НафНаф
 
25.03.13
13:31
зачем?
8 Wobland
 
25.03.13
13:31
(5) прибедняется. чтоб жалели больше ;)
(6) в результате ты получишь свои документы. и можешь с ними делать всё, что вздумается
9 aguilar
 
25.03.13
13:31
(5) Вот вы повторили точь в точь слова моей бывшей учительнице  по русскому)
10 aguilar
 
25.03.13
13:32
(8) Ага,спасибо,сейчас буду пробывать!
11 cw014
 
25.03.13
13:35
Намедни смотрел фильм "Жмурки". Так вот ТС - Эфиоп... :)
12 aguilar
 
25.03.13
13:43
Помогите пожалуйста,вот пишу так в модуле ФормеСписка документа

Построитель = Новый ПостроительЗапроса;
   Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ДокументСписок);
   Результат = Построитель.Результат;
   Результат.Выгрузить();

   Для Каждого Стр Из Результат Цикл
       Для Каждого Ап Из Стр.ОбъектыПроката Цикл
       Если Стр.ИнвентарныйНомер = 1 Тогда
               Отказ=Истина;
               Сообщить("Некоторые фильмы,были уже оприходованы!");
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;

Пишет интегратор не определен :\  
в для каждого Стр Из Результат
13 H A D G E H O G s
 
25.03.13
13:49
Построитель = Новый ПостроительЗапроса;
   Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ДокументСписок);
   Результат = Построитель.Результат;
   ТЗ=Результат.Выгрузить();

   Для Каждого Стр Из ТЗ Цикл
       Для Каждого Ап Из Стр.ОбъектыПроката Цикл
       Если Стр.ИнвентарныйНомер = 1 Тогда
               Отказ=Истина;
               Сообщить("Некоторые фильмы,были уже оприходованы!");
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;
14 H A D G E H O G s
 
25.03.13
13:50
А вообще - ты чето мутное делаешь.
15 Wobland
 
25.03.13
13:51
(12) итератор, батенька, итератор
16 kosts
 
25.03.13
13:51
(0) Может ты хочешь просто при просмотре этого списка видеть колонку ИнвентарныйНомер?
17 Wobland
 
25.03.13
13:51
и запятых маловато в Сообщить
18 aguilar
 
25.03.13
13:57
(16) Нет,я делаю,при добавлении документа,если совпадает инвентарный номер,то его не проводить.
Я не могу к Таб.Части обратиться

Для Каждого Стр Из ТЗ Цикл
       Для Каждого Ап Из Стр.ОбъектыПроката Цикл
       Если Ап.ИнвентарныйНомер = 1 Тогда
               Отказ=Истина;
               Сообщить("Некоторые фильмы,были уже оприходованы!");
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;


Таб часть ОбъектыПроката,раньше так обращался видел его
19 kosts
 
25.03.13
13:59
(18) Это и нужно было в (0) писать...
20 Reset
 
25.03.13
14:01
"Некоторые фильмы,были уже оприходованы!"

Запятая не нужна. В этом все дело
21 kosts
 
25.03.13
14:01
> "Некоторые фильмы,были уже оприходованы!"

За заставляй пользователя крыть матом всё на свете, напиши конкретно с каким фильмом проблема...
22 kosts
 
25.03.13
14:02
Не заставляй...
23 aguilar
 
25.03.13
14:04
(20) :))
Извините наверное глупые вопросы задаю) Я просто недавно в этом деле еще)
24 kosts
 
25.03.13
14:05
(23) В твоем случае нужно использовать запрос.
25 aguilar
 
25.03.13
14:05
(22) Да это учебная,для себя пишу,я понимаю что так писать плохо) Мне бы моя выборка заработала)
26 H A D G E H O G s
 
25.03.13
14:06
(23) В Древней Греции взрослые мужи брали мальчиков в обучение. Почему бы тебе не пойти путем мальчиков?
27 kosts
 
25.03.13
14:06
(25) В том что и дело, что нужно сразу учиться правильно делать..
28 Privalov
 
25.03.13
14:06
(25) И для себя так писать не нужно. Нужно разобраться и писать сразу хорошо, а не чтобы "заработала".
29 zladenuw
 
25.03.13
14:07
(26) а ты возьмешь в падаваны ? за еду ?
30 kosts
 
25.03.13
14:07
(25) Попробуй запросом, если что задавай вопросы
31 aguilar
 
25.03.13
14:08
(26) Некому учить :\
Я запроса еще на Вы,по другому никак не сделать?
А отменить копирование в форме списка тогда можно?
32 H A D G E H O G s
 
25.03.13
14:08
(29) Нет. Из зарубежья мы берем только девушек.
33 zladenuw
 
25.03.13
14:09
(32) ага, а потом окажется что это девушка, бородач :)
34 kosts
 
25.03.13
14:10
(31)

Процедура ДокументСписокПередНачаломДобавления(Элемент, Отказ, Копирование)
   
   Если Копирование Тогда
       Отказ = Истина;
   КонецЕсли;

КонецПроцедуры

35 kosts
 
25.03.13
14:11
(31) >Я запроса еще на Вы,по другому никак не сделать?

Запросами еще легче делать, чем всякими выборками...
36 aguilar
 
25.03.13
14:22
Построитель = Новый ПостроительЗапроса;
   Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ДокументСписок);
   Результат = Построитель.Результат;
   ТЗ=Результат.Выгрузить();

   
   Для Каждого Стр Из ТЗ Цикл
       Для Каждого Ап Из Стр.Ссылка.ОбъектыПроката Цикл
       Если Ап.ИнвентарныйНомер = 1 Тогда
               Отказ=Истина;
               Сообщить("Бери берёзу и уходи!");
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;

Вот он заработал,надо было,Ссылка поставить перед словом.

А как проверить на все существующие интвентарный номера в документе?Чтобы прошел по всем и если такого нету, то все хорошо.
37 Wobland
 
25.03.13
14:23
(36) запросом же
38 H A D G E H O G s
 
25.03.13
14:23
"Бери берёзу и уходи!"

Ах, Беларусь, Беларусь...
39 kosts
 
25.03.13
14:24

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

40 kosts
 
25.03.13
14:25
(39) Это в обработку проведения засунуть
41 aguilar
 
25.03.13
14:28
(40) ага,спасибо!
42 H A D G E H O G s
 
25.03.13
14:29
(39) Че за бредятина?
43 kosts
 
25.03.13
14:30
(42) На скорую руку
44 kosts
 
25.03.13
14:31
Результат = Запрос.Выполнить().Выбрать(); ->  Выборка = Запрос.Выполнить().Выбрать();
45 H A D G E H O G s
 
25.03.13
14:33
(43) Тяжелая у тебя рука. Запрос бессмысленнен.
46 kosts
 
25.03.13
14:39
(45) Сперва так сделал, потом что-то переделал...


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


Первый не сработает пока док не записан...
47 kosts
 
25.03.13
14:42
(46) Ну и проверить, нужно что бы документ сам себя не банил )))
48 aguilar
 
25.03.13
14:43
Делаю так

Построитель = Новый ПостроительЗапроса;
   Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ДокументСписок);
   Результат = Построитель.Результат;
   ТЗ=Результат.Выгрузить();
   
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ОприходованиеОбъектаПрокатаОбъектыПроката.ИнвентарныйНомер
   |ИЗ
   |    Документ.ОприходованиеОбъектаПроката.ОбъектыПроката КАК ОприходованиеОбъектаПрокатаОбъектыПроката";
   мРезультат = Запрос.Выполнить().Выбрать();
   
   Пока мРезультат.Следующий() Цикл
   Для Каждого Стр Из ТЗ Цикл
       Для Каждого Ап Из Стр.Ссылка.ОбъектыПроката Цикл
       Если Ап.ИнвентарныйНомер = мРезультат.ИнвентарныйНомер Тогда
               Отказ=Истина;
               Сообщить("Бери берёзу и уходи!");
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;
   КонецЦикла;

Всегда отказ получаю)
49 kosts
 
25.03.13
14:50
(48) Зачем тебе тебе для проверки список документов из формы?
Проверяй при проведении или записи документа...