Имя: Пароль:
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) Зачем тебе тебе для проверки список документов из формы?
Проверяй при проведении или записи документа...
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший