Имя: Пароль:
1C
1C 7.7
v7: поиск нужного документа по представлению
0 st31
 
07.05.14
07:48
Всем привет,                                                              
Давно не программировал,
поэтому и возник очередной вопрос как сделать проще.
Надо найти документ по его представлению, который записан в виде строки:
СокрЛП(ТЗ.Документ1) = "СчетБюро 419 (14.02.14)";
Вариант "быстрого поиска" нужного документа
Док1=СоздатьОбъект("Документ.СчетБюро");
Если Док1.НайтиДокумент(СокрЛП(ТЗ.Документ1))=1 Тогда  
Док.СчетБюро=Док1.ТекущийДокумент();
Док.Записать();
КонецЕсли;           
не прокатил. Выдается сообщение:
Док1.НайтиДокумент(СокрЛП(ТЗ.Документ1)) = Ошибка в выражении!
Док1.НайтиДокумент(СокрЛП("СчетБюро 419(14.02.14)") = Ошибка в выражении!
Возможен ли более быстрый и простой путь нахождения нужного документа:
Док=СоздатьОбъект("Документ.СчетБюро");
Док.ВыбратьДокументы(ДатаНач1, ДатаКон1);
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.ДатаДок=ТЗ.ДатаДок Тогда
Если СокрЛП(Док.НомерДок)=СокрЛП(ТЗ.НомерДок) Тогда
а дальше уже понятно как, но это перебор из массива относительно большого количества документов.
Как можно быстрее и проще найти нужный документ исходя из того,
-что номера документов каждый год повторяются
-что иногда надо найти документ, который записан прошлым годом и на него требуется сослаться)
Буду благодарен всем, кто поделится своим опытом.
1 Mikeware
 
07.05.14
08:01
Разбирай строку, и ищи по номеру и дате. из найденых - смотри, в каких формируемое представление совпадает с шаблоном.
2 Mikeware
 
07.05.14
08:02
А вообще, "пригласите программиста"©
Ну или хотя бы какого-нибудь выпускника школы, имеющего не менее четверки по информатике.
3 st31
 
07.05.14
08:21
Эта тема ни у кого не встречалась?
4 Ёпрст
 
07.05.14
08:23
(3) врят ли. Кому надо искать что-то по представлению ? Разве что по обкурке.
Ты лучше поведай, откуда представление документа взялось.
5 Wobland
 
07.05.14
08:24
можно жену себе искать по сформированному представелнию...
6 st31
 
07.05.14
08:31
(1) Благодарю, Ваш совет оказался самым ценным
(2) Ваш совет очень ценный, если Вам нечего сказать, то чего, то мне нечего Вам ответить
(4) При выгрузке для переноса сформировал. Думал как попроще сделать поиск при формировании документа в другой базе
(5) Кто не ставит себе парадоксальную, неординарную задачу, тот не получает оригинальные решения :-)
Пойду через перебор массива документов изведанным путем.
Всем спасибо, что откликнулись :-)
7 Ёпрст
 
07.05.14
08:44
(6) при выгрузке для переноса формируют не представление.

Любишь создавать себе трудности, чтоб потом мужественно преодолевать их ?
Поэтому занимаешься сексом стоя в гамаке в ластах ?
8 Wobland
 
07.05.14
08:51
(6) стандартная обыденная задача не всегда предполагает изощрённые решения
9 Chum
 
07.05.14
08:57
(7) хы, еще и на морозе.

>"СчетБюро 419 (14.02.14)"

Ну, вид документа у тебя есть. Номер выдергиваешь через парсинг, например:

Док = СоздатьОбъект("Документ.СчетБюро"); // это должно быть перед циклом. За создание объекта в цикле ставят на пару часов на горох

л_Строка = СтрЗаменить(СокрЛП(ТЗ.Документ1), " ", РазделительСтрок);
л_Номер = СокрЛП(СтрПолучитьСтроку(л_Строка, 2));
л_Дата = СокрЛП(СтрПолучитьСтроку(л_Строка, 3));
л_Дата = Дата(Сред(л_Дата, 2, СтрДлина(л_Дата)-1)); // тут не совсем уверен, что строка "14.02.14" корректно преобразуется в дату, а 1С под рукой нет

Если Док.НайтиПоНомеру( л_Номер, л_Дата ) <> 0 Тогда
// что-то делаешь с документом
Иначе
// что-то делаешь, если документ не найден
КонецЕсли;

Почему нужна дата - номера у документов могут повторятся в зависимости от периодичности нумерации. По умолчанию система находит первый документ с более ранней датой.
10 VladZ
 
07.05.14
09:04
"...перебор из массива относительно большого количества документов". Сразу видно, студент.
11 Mikeware
 
07.05.14
09:09
(10)Это не студент, это идиот.
Хотя нынешние студенты зачастую таковыми и являются....
12 an-korot
 
07.05.14
10:01
почему документ записан ввиде строки? что тебе мешает в таблицу положить ссылку на этот документ? если что-то мешает (религия), то почему ты просто номер этого документа не положишь в таблицу?  

иногда у меня складывается впечатление что некоторые люди специально бредовые вопросы задают на мисте чтобы мы сноровку не теряли )))))
13 КонецЦикла
 
07.05.14
10:14
>> который записан прошлым годом и на него требуется сослаться

Записать в ТЗ ссылку на документ
Ваш КЭП
2 + 2 = 3.9999999999999999999999999999999...