| 
			| 
					
						| Osman 
								Гость
 | 
								|  | «  : 09-08-2006 11:40 »  |  | 
 
 У меня стоит 1С:Предприятие 7.7 РАРУС:Автохозяйство...Сделал отчёт(точнее моя работа заключается в том чтоб исправить ошибки, допущенные когда-то кем-то): Ведомость технико-эксплуатационных показателей работы автотранспорта за период...
 Там в таблице следующие графы: Гараж, Транспортное средство, Автодни(По Путевым листам, в хозяйстве, в работе на период, в ремонте, в простое, выходные) и т.д. не важно... Суть проблемы вот в чём: Допустим делаем ведомость за месяц, но посреди месяца списываем одну машину(т.е. другие полмесяца машина не работала)... В программе получается следующее... Автодни в хозяйстве - число не меняется, т.к. полмесяца как машина выбыла проставляется в проге что она на Выходном... Т.е. графа выходные увеличивается, хотя не должна, т.к.машины нет уже фактически... А остальное всё работает...
 Просто это последний баг, остальные исправил норм... Столько уже работы проделал...
 Если честно, не вижу смысла в выкладывании текста отчета, т.к. можно наверно абсолютно независимую часть тела модуля сделать...(это моё мнение...)
 Вот, вроде этот кусок... Выкладываю как было...
 //**тема с выбытием
 СостОС=СоздатьОбъект("Периодический");
 СостОС.ИспользоватьОбъект("СостояниеОС",Ам);
 состОс.ОбратныйПорядок();
 СостОс.ВыбратьЗначения(пвдатаНач,ПвДатаКОн);
 Сообщить(Ам.Наименование);
 //   Работал=0;
 НеРаботал=0;
 ДатаК=пвДатаКОн;
 
 АвтодниВХозяйстве = 1 + глРазницаВДатах(ДатаНач,ДатаКон);
 
 
 спрТранс=СоздатьОбъект("Справочник.ТранспортныеСредства");
 спрТранс.НайтиПоКоду(АМ.Код);
 ДВВЭ=спрТранс.ДатаВводаВЭксплуатацию;
 
 
 Если (ДатаНач<ДВВЭ) и (ДатаКон<ДВВЭ) Тогда АвтоДниВХозяйстве=0; КонецЕсли;
 Если (ДатаНач<=ДВВЭ) и (ДатаКон>ДВВЭ) Тогда АвтоДниВХозяйстве=ДатаКон-ДВВЭ+1; КонецЕсли;
 
 
 //**
 Пока состОс.получитьЗначение()>0 цикл
 Если состОС.Значение=Перечисление.СостоянияОС.В_эксплуатации тогда
 Сообщить(Строка(СостОс.Значение)+"  Машина в эксплуатации "+Строка(СостОс.ДатаЗнач)+ "  не работал "+Строка(НеРаботал));
 
 Иначе
 НеРаботал=НеРаботал+ глРазницаВДатах(СостОс.ДатаЗнач,ДатаК);
 ДатаК=состОс.ДатаЗнач;
 Сообщить(Строка(СостОс.Значение)+"  Машины нет "+Строка(СостОс.ДатаЗнач)+"не работал"+Строка(неработал));
 КонецЕсли;
 КонецЦикла;
 АвтодниВХозяйстве =АвтодниВХозяйстве-НеРаботал;
 
 
 Иначе Если состОС.ПолучитьЗначение()=0 тогда
 Если состОС.ЗначениеНаДату(пвДатаКон)=Перечисление.СостоянияОС.В_Эксплуатации тогда
 АвтодниВХозяйстве = 1 + глРазницаВДатах(ДатаНач,ДатаКон);
 Сообщить("...");
 КонецЕсли;
 КонецЕсли;
 КонецЕсли;
 
 ИначеЕсли состОС.ЗначениеНаДату(пвДатаНач)<>Перечисление.СостоянияОС.В_эксплуатации тогда
 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #1 : 09-08-2006 14:57 »  |  | 
 
 Выложить стоит потому что, как я писал в личке - у меня такой конфы нет, но возможно смогу помочь по коду (или кто-то сможет, тоже не знакомый с конфой). Т.к. где-то или неверное условие, или оно пропущено.Отчет не полностью, отформатирован криво - понять трудно.
 Попробуй аккуратно выложить текст (используй теги [ code ] (без пробелов возле скобок))
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Osman 
								Гость
 | 
								|  | « Ответ #2 : 10-08-2006 05:22 »  |  | 
 
 у меня такой конфы нет, но возможно смогу помочь по коду (или кто-то сможет, тоже не знакомый с конфой). Т.к. где-то или неверное условие, или оно пропущено.
 Какая разница какая конфа? ОТчет сам кто то делал, т.е. такого ни у кого нет...... :  Да, я тож понял что в условии... Дак вот я в непонятках, как написать его... (опыт работы с 1С - 1месяц) Отредактировать и привести в нормальный вид вряд ли получится. т.к. видели бы вы в каком виде это всё в программе написано... Ужас... Это я ещё более-менее привел в божеский вид... Так что перекладывать смысла нет...   Может выложить полную версию отчета? ТОка он достаточно объемный...  Пжалста, срочно нужно... |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #3 : 10-08-2006 06:12 »  |  | 
 
 Какая разница какая конфа? До чего мне "нравится" упрямство типа: "я всего неделю как что-то делаю, но уже имею собственное мнение. Помогите, но чтобы не противоречить моему мнению". Конфа нужна потому как в ней определены метаданные, а 99% отчетов строятся исходя из их структуры. Ты нигде  в первом сообщении не писал, что это не стандартный отчет для конфы. К сообщению можно приложить файл (при редактировании - Additional options) Заархивируй отчет и вложи |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Osman 
								Гость
 | 
								|  | « Ответ #4 : 10-08-2006 07:05 »  |  | 
 
 Извини, Kivals... Признаю ошибку... Исправлюсь...    Вроде выложил полную версию в архиве... Я ниче не менял...     Оригинал... Если сможешь помочь, то безмерное признание и уважение... |  
						| 
								| 
 
										 ТЭП.rar  (4.67 Кб - загружено 1381 раз.)
									 |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #5 : 10-08-2006 07:58 »  |  | 
 
 А хорошо бы ты полную обработку еще выложил - ert файл(Если это внутренняя - то по правой кнопке на ней "Сохранить как внешний отчет(обработку)...")
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Osman 
								Гость
 | 
								|  | « Ответ #6 : 10-08-2006 08:16 »  |  | 
 
 Выложил...
 |  
						| 
								| 
 
										 тэп.rar  (16.74 Кб - загружено 1375 раз.)
									 |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #7 : 10-08-2006 11:10 »  |  | 
 
 посреди месяца списываем одну машину Как именно это происходит? Документ? Какой именно? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #8 : 10-08-2006 11:18 »  |  | 
 
 Предположение 1: вот эту строку 		АвтодниВХозяйстве = 1 + глРазницаВДатах(ДатаНач,ДатаКон);Заменить на 		ДатаК=?(ПустоеЗначение(ДатаСписания)=1,ДатаКон,Мин(ДатаКон,ДатаСписания));ДатаК=Макс(ДатаК, ДатаНач-1); // на всякий случай, чтобы АвтодниВХозяйстве>=0
 АвтодниВХозяйстве = 1 + глРазницаВДатах(ДатаНач,ДатаК);
Где: ДатаК - новая временная переменная ДатаСписания - Дата списания машины (не знаю откуда - из справочника или документа) |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #9 : 10-08-2006 11:19 »  |  | 
 
 Еще наверное по всему тексту внутри цикла ниже нужно заменить ДатаКон на ДатаК |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Osman 
								Гость
 | 
								|  | « Ответ #10 : 10-08-2006 11:35 »  |  | 
 
 Проблема в том что даты нет... Она берется так: (пишу как в программе 1С найти можно)Справочники - Транспортные средства - Транспортные средства - (выбирается машина) - История - Выбыло(и вот рядом стоит дата)...  Не знаю как её от туда достать... Была б дата, там работы было б на 5 минут.... Но как оттуда её взять?     |  
						| 
								|  |  
								| « Последнее редактирование: 10-08-2006 11:39 от Osman » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #11 : 10-08-2006 13:33 »  |  | 
 
 Выбыло - это периодический реквизит справочника ТранспортныеСредства? Тогда меняем на такой блок: 	ДатаКонВыб=ДатаКон;П=СоздатьОбъект("Периодический");
 П.ИспользоватьОбъект("Выбыло", АМ);
 П.ОбратныйПорядок(1);
 П.ВыбратьЗначения(НачДата,КонДата);
 Если П.ПолучитьЗначение()=1 Тогда
 ДатаКонВыб=П.Значение;
 КонецЕсли;
 АвтодниВХозяйстве = 1 + глРазницаВДатах(ДатаНач,ДатаКонВыб);
(Кстати - не заметил, что в коде уже есть ДатаК - поменял на ДатаКонВыб) |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Osman 
								Гость
 | 
								|  | « Ответ #12 : 10-08-2006 13:45 »  |  | 
 
 Нет, не периодический...    Там когда на историю нажимаешь появляется табличка: в левой графе дата, в правой состояниеОС(в эксплуатации, выбыло или другое...)... Непосредстввенно Выбыло - не дата... Дата рядом с выбыло... Это в истории вручную выбирается: Выбыло и Дата в Ручную ставится...    Вот... На слово выходит -  выбыло, а как дату взять оттуда? *спасиб, что помогаешь... Я пробую, стараюсь, блин... Признателен... |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #13 : 10-08-2006 13:48 »  |  | 
 
 Как реквизит называется? Будь добр: в конфигураторе: Конфигурация - Описание структуры метаданных
 ищешь:
 - Справочник
 - Идентификатор   "ТранспортныеСредства"
 и копируешь все, до следующего объявления
 - Справочник
 архивируешь и прикрепляешь к теме...
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #14 : 10-08-2006 13:49 »  |  | 
 
 Кстати - другие слова кроме "выбыло" там бывают? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Osman 
								Гость
 | 
								|  | « Ответ #15 : 10-08-2006 14:01 »  |  | 
 
 Бывают: В эксплуатации, аренде и т.п. Там выбирать можно.... Вот справочник...   Именно, что реквизит не знаю как называется... Допустим Дата ввода в эксплуатацию - определено, а выбытия нет...    |  
						| 
								| 
 |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #16 : 10-08-2006 14:44 »  |  | 
 
 Я так понимаю - это твой код: 		//**тема с выбытиемСостОС=СоздатьОбъект("Периодический");
 СостОС.ИспользоватьОбъект("СостояниеОС",Ам);
 состОс.ОбратныйПорядок();
 СостОс.ВыбратьЗначения(пвдатаНач,ПвДатаКОн);
 Сообщить(Ам.Наименование);
 //	Работал=0;
 НеРаботал=0;
 ДатаК=пвДатаКОн;
 
Ты на правильном пути был    Чуть-чуть не так (исправляю все-таки свой код): 	ДатаКонВыб=ДатаКон;П=СоздатьОбъект("Периодический");
 П.ИспользоватьОбъект("Выбыло", АМ);
 П.ОбратныйПорядок(1);
 П.ВыбратьЗначения(НачДата,КонДата);
 Если П.ПолучитьЗначение()=1 Тогда
 Если П.Значение=Перечисление.СостояниеОС.Выбыл Тогда
 ДатаКонВыб=П.ДатаЗнач;
 Прервать;
 КонецЕсли;
 КонецЕсли;
 АвтодниВХозяйстве = 1 + глРазницаВДатах(ДатаНач,ДатаКонВыб);
 
и не забудь ниже заменить ДатаКон на ДатаКонВыб |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #17 : 10-08-2006 15:16 »  |  | 
 
 Тьфу! Ошибку увидел: неП.ИспользоватьОбъект("Выбыло", АМ);
 а
 П.ИспользоватьОбъект("Состояние", АМ);
 или может
 П.ИспользоватьОбъект("СостояниеОС", АМ);
 смотря какой реквизит используется... (они чего-то оба одинакового типа и оба периодических)
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Osman 
								Гость
 | 
								|  | « Ответ #18 :  11-08-2006 06:13 »   |  | 
 
   Значит то что выше мне затереть, а то что ниже вставить...? Состояние или состояниеОС это я знаю, НО: Когда всё так делаю, то у меня выводится всего 2 машины, когда должно около 20...    Почему остальные не бурется?    И ещё можешь это пояснить: ----------------------------- Если П.Значение=Перечисление.СостояниеОС.Выбыл Тогда         ДатаКонВыб=П.ДатаЗнач;         Прервать; ---------------------------- Что это означает?  просто я не просто сделать, но я и понять ещё хочу...  После прерывания куда ведет?  Где то ещё надо мб что-нибудь заменить?  |  
						| 
								|  |  
								| « Последнее редактирование: 11-08-2006 06:15 от Osman » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #19 : 11-08-2006 09:55 »  |  | 
 
 П.Значение=Перечисление.СостояниеОС.Выбылэто как раз проверяем на нужное значение в периодической константе
 если это так - то конечную дату ставим датой такого значения (ДатаКонВыб=П.ДатаЗнач;) и прерываем обход по АМ.СостояниеОС, т.к. мы уже нашли нужную нам дату...
 Почему выводится 2, а не 20 - не знаю.
 До этого выводились все 20?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Osman 
								Гость
 | 
								|  | « Ответ #20 : 14-08-2006 05:56 »  |  | 
 
 	П.ВыбратьЗначения(НачДата,КонДата);
 Если П.ПолучитьЗначение()=1 Тогда
 Если П.Значение=Перечисление.СостояниеОС.Выбыл Тогда
 ДатаКонВыб=П.ДатаЗнач;
 Прервать;
 КонецЕсли;
 КонецЕсли;
 
и не забудь ниже заменить ДатаКон на ДатаКонВыбХочу сразу сказать, я сделал это... Не без твоей помощи Kivals... Ты бог...  Спасибо преогромное!!! Но ты меня заставил призадумаца... Всё получилось благодаря:  1.Не ставил функцию Прервать. 2.Не менял по ходу программы ДатаКон на ДатаКонВыб 3."Если П.Значение=Перечисление.СостояниеОС.Выбыл Тогда " надо окончания другие...: "Если П.Значение=Перечисление.СостоянияОС.Выбыло Тогда" А так всё как ты сказал... Ещё раз благодарю... **надеюсь на помощь при необходимости в следующий раз... Удачи! |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Osman 
								Гость
 | 
								|  | « Ответ #21 : 23-08-2006 11:03 »  |  | 
 
 Значит тэкккс...Допустим список машин(табель о работе), их там около 30... У 28 всё нормально, так как надо, а у 2 небольшие отклонения(по 3-4 выходных не ставит(оставляет пустыми))... Ошибка в программе или просто у этих двух машин что-то не правильно записано? Бухгалтерскую сторону проверял вроде толково написано... не знаю... Вроде и в проге нет ошибок...(остальные же машины правильно пишет...).
 1.Ошибка в программе или просто заполнили там что то не так? (у 28 ведь правильно считает, а тока у двух - нет, хотя одно и тоже)
 2.Если в проге, то может выложить всю конфу, если да, то как?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Osman 
								Гость
 | 
								|  | « Ответ #22 : 06-09-2006 07:52 »  |  | 
 
 Так с тем я справился... Но у меня ещё вопрос... Вот допустим открываеца документ который нужно заполнить... Сначала номер, потом дату и т.д... Т.е. удобнее всего да и должно быть : чтоб курсор при открытии документа появлялся в номере документа, а у меня он находица где-то в середине... Это не удобно каждый раз мышью ставить курсор на номер документа. Подскажите плз, как это сделать? Хотя бы в принципе где это меняется? (Надеюсь хоть это от конфы не зависит... =))Спасибо.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #23 : 06-09-2006 09:37 »  |  | 
 
 Если я не ошибаюсь курсор по умолчанию ставится на первый элемент в списке обхода (Tab list) порядок меняется из конфигуратора в меню "Диалог" следующими пунктами: - Порядок обхода - Настройка порядка обхода - Автоматический порядок обхода Смотри в хелпе что за что отвечает Порой они глючат, закономерностей не помню   Если не поможет - есть вариант через обработку, но про это позже... |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Osman 
								Гость
 | 
								|  | « Ответ #24 : 06-09-2006 10:44 »  |  | 
 
 Спасиб это помогло...(я сам до этого дошёл... просто сначала не мог этой вкладки:Диалог найти...)А вот ещё такой косяк: как сделать так чтобы в одном документе, заполненном на основании другого брались не все реквизиты? Есть алгоритм какой нить? Например: Накладная заполняеца на основании Путевого листа и всё что есть в путевом, автоматически попадает в Накладную... А мне нужно чтобы дата была другой, но остальное оставалось как есть...(если менять вручную, то при расчете з/п прога видит Накладные как две(с измененной датой и с той которая в Путевом листе)). Что делать? Примерно хотя бы! не могу нить уловить. Предложил с одной датой делать и Путевой и Накладную, тогда всё нормально, но бухгалтер уперлась и сказала что обязательно надо так...(но получаеца удвоенная зарплата...). Ладно я уже повторяюсь... Помогите если не лень...
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #25 : 06-09-2006 10:59 »  |  | 
 
 Дело не в лени - времени в обрез.у тебя 2 проблемы:
 1. ввод документа на основании регулируется встроенной процедурой ВводНаОсновании(ДокОснование) в модуле вводимого типа документа. Вся логика прописывается внутри - можешь менять как хочешь.
 2. при расчете з/п видимо в алгоритм заложено, что Накладная и Путевой лист должны быть одной датой. Ты меняешь логику программы - ты должен исправить и алгоритм расчета.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Osman 
								Гость
 | 
								|  | « Ответ #26 : 06-09-2006 11:05 »  |  | 
 
 Спасиба за скорость и вообще спасибо... Щас попробую что либо изменить... в лучшую сторону... Но вроде первое я уже делал... не помогло... |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Osman 
								Гость
 | 
								|  | « Ответ #27 : 02-10-2006 06:51 »  |  | 
 
 Привет... Снова я... Ну, не мегапрограммер в 1С пока я... Учусь пока только...А делать нужно прямо сейчас, поэтому снова прошу помощи...Я не знаю, может кто помочь, у меня две проблемы: 1.в тексте нужно изменить текст(но тут не всё так просто по-моему)  2.Нужно из перечисления исключить некоторые элементы... Это всё в одном документе...
 
 Поможет кто-нибудь??? Мне что-то выложить на форум? Что? Хэлп плз...
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #28 : 02-10-2006 07:21 »  |  | 
 
 1. Смотри в хелпе: СтрЗаменить(), Найти(), Лев(), Прав(), Сред(). Также возможно поможет НРег() или ВРег()2. Копай в сторону ПриНачалеВыбораЗначения() (предопределенная для формы) и ВыбратьЗначение() (для СписокЗначений)
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Osman 
								Гость
 | 
								|  | « Ответ #29 : 02-10-2006 07:57 »  |  | 
 
 Там короче нужно вот что:Сделан отчет... Он просто выводит разные справочники... Вначале выбираешь справочник, например транспортные средства, потом ставишь галочки, что про них выводить(гос.номер, дата Техосмотра, дата сертификатов и т.д) нажимаешь сформировать и выдается отчет...
 В справочнике транспортные средства есть: сами авто, арендованные, списаные... А мне нужно, чтоб выводилась группа только с самими автомобилями, без арендованных и т.п... И такая тема: нужно когда до даты техосмотра следующего и прочих дат остаётся меньше месяца, то они должны выделятся красным цветом... Плохо то что отчет для всех справочников общий и там в столбцах не фиксированные названия, если бы было так, то можно бы области выделять и там менять цвет, но ведь в данном случае области могут местами менятся, они могут быть а могут и нет...
 Было б всё так просто я б сам уж додумался... наверное...
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  |